minio前端访问跨域问题

背景:

正常使用docker部署好的minio,但是文件无法正常使用


阶段1 :

此阶段极大可能是minio的桶并未并未开放,因此无法正常下载
此时需要登录minio修改,正在使用的minio桶的类型为publice

阶段2:

需要注意的是,如果通过内网ip进行访问minio服务器会造成跨域问题,因此需要通过192.168.xxx.1,将自己的minio映射到公网上,通过公网的ip或者域名进行访问,此时即可解决跨域问题

### 前端直连上传至MinIO配置与示例代码 #### 配置MinIO服务器以支持CORS请求 为了使前端能够直接向MinIO发送HTTP请求,必须先在MinIO上设置资源共享(CORS)策略。这允许来自特定源的请求访问资源。 ```json { "CORSRules": [ { "AllowedOrigins": ["http://localhost:8080"], "AllowedMethods": ["GET", "PUT", "POST", "DELETE"], "AllowedHeaders": ["*"] } ] } ``` 此JSON定义了哪些名可以发起请求以及允许的方法和头信息[^1]。 #### 客户端JavaScript代码实现文件上传 下面是一个简单的React组件例子,用于展示如何构建表单并处理文件提交事件: ```javascript import React from 'react'; class FileUpload extends React.Component { constructor(props){ super(props); this.state = {file:null}; this.onFormSubmit = this.handleFormSubmit.bind(this); this.onChange = this.handleChange.bind(this); } handleChange(event){ this.setState({file:event.target.files[0]}); } async handleFormSubmit(event){ event.preventDefault(); const data = new FormData() data.append('file', this.state.file) try { await fetch('http://your-minio-server-url/upload', { method:'POST', body:data, headers:{ 'Authorization': `Bearer ${process.env.REACT_APP_MINIO_ACCESS_KEY}` } }) console.log('File uploaded successfully'); } catch(error){ console.error('Error:', error); } } render(){ return ( <form onSubmit={this.onFormSubmit}> <h1>File Upload</h1> <input type="file" onChange={this.onChange} /> <button type="submit">Upload</button> </form> ); } } export default FileUpload; ``` 这段代码创建了一个名为`FileUpload`的类组件,它包含了两个主要方法:一个是用来更新状态中的文件对象;另一个则是负责实际执行上传操作,在这里使用了Fetch API来发出带有文件数据的POST请求[^4]。 请注意替换`http://your-minio-server-url/upload`为真实的MinIO服务地址,并确保已正确设置了环境变量`REACT_APP_MINIO_ACCESS_KEY`以便于身份验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值