记录上传文件至阿里云的跨域问题

问题描述

新项目中将文件上传至阿里云,但调取接口时出现跨域问题。
在这里插入图片描述

报错信息大概意思是:从源http://localhost:2888发起的请求已经被CORS政策阻止:对预请求的响应不通过访问控制检查:当请求的凭据模式为 'include' 时,响应中的 'Access-Control-Allow-Origin' 头的值不能是通配符 '*' 。由XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。

原因分析:

与后端沟通过,请求头没有问题,且已经做好相应配置。
根据报错信息在框架中发现对axios的封装中设置了

axios.defaults.withCredentials = true;

axios官网
withCredentials表示跨域请求时是否需要使用凭证。当设置为 true 时,意味着跨域请求会携带凭证(例如cookies),同时服务器也需要同意发送凭证,否则请求会失败。服务器也需要返回正确的 Access-Control-Allow-Credentials 头信息。
此时接口设置的Access-Control-Allow-Credentials 就不能是 ‘*’,而应该是源地址。

解决方案:

在进行axios请求时,将withCredentials设置为false。

	axios.put(res.data.pushUrl, params.file, {
        headers: {
          'content-Type': params.file.type || ''
        },
        withCredentials: false
     })

对项目全局不影响的情况也可以在axios封装中将axios.defaults.withCredentials = true;注释即可。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于ElementUI和阿里云OSS的分片上传视频跨域问题,您可以通过配置CORS规则来解决。 首先,在阿里云OSS的控制台中,找到您的存储空间,并进入"域名管理"页面。然后,点击您要使用的域名,进入该域名的详细设置页面。 在页面下方的"CORS配置"部分,点击"添加规则"按钮,然后按照以下步骤进行配置: 1. 在"允许的来源"中填写您的网站域名,例如:"http://example.com"。 2. 在"允许的方法"中选择"GET"、"PUT"、"POST"、"DELETE"、"HEAD",这些方法是常用的上传操作所需要的。 3. 在"允许的头部信息"中填写"Content-Type",这是常用的上传请求头部信息。 4. 在"暴露的头部信息"中填写"ETag"和"Content-Length",这些是常用的响应头部信息。 完成上述配置后,保存并退出设置页面。 接下来,在您使用ElementUI进行文件上传的代码中,需要在请求头中添加一些特定的头部信息,以允许跨域请求。具体代码如下: ```javascript this.$refs.upload.uploadFiles.forEach(file => { file.headers = { 'Access-Control-Allow-Origin': 'http://example.com', 'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, HEAD', 'Access-Control-Allow-Headers': 'Content-Type' }; }); ``` 请将上述代码中的"http://example.com"替换为您的网站域名。 通过以上配置和代码修改,您应该能够解决ElementUI和阿里云OSS分片上传视频的跨域问题。希望对您有帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值