oss图片跨域问题_OSS跨域资源共享(CORS)出现的常见错误及解决方案

本文详述了阿里云OSS图片跨域问题的CORS配置错误及解决方案,包括来源、Methods、Headers的配置要点,并提供了错误排查与调试方法。
摘要由CSDN通过智能技术生成

概述

本文主要介绍跨域资源共享(Cross Origin Resource Sharing,简称CORS)配置的常见错误及解决方案。

详细信息

配置项

CORS的配置方法一般是针对每个访问来源单独配置规则,勿将多个来源加到一个规则,多个规则之间不要有覆盖冲突。其它的选项只开放需要的权限即可。CORS配置有以下几项:

来源:允许跨域请求的来源,可以同时指定多个来源。配置时需带上完整的域信息,例如:http://10.X.X.100:8001或https://www.aliyun.com。注意,不要遗漏了协议名http或https,如果端口不是默认的80,还需要带上端口。如果不能确定域名,可以打开浏览器的调试功能,查看Header中的Origin。域名支持*通配符,每个域名中允许最多使用一个*,例如https://*.aliyun.com。如果来源指定为*,则表示允许所有来源的跨域请求。

允许 Methods:按照需求开通对应的方法即可,调试时可以全部选择。

允许 Headers:允许的跨域请求Header。允许配置多条匹配规则,以回车间隔。在Access-Control-Request-Headers中指定的每个Header,都必须在Allowed Header中有对应项。Header容易遗漏,没有特殊需求的情况下,建议设置为*,表示允许所有,大小写不敏感。

暴露 Headers:暴露给浏览器的Header列表,即用户从应用程序中访问的响应头,例如一个Javascript的XMLHttpRequest对象。不允许使用通配符。具体的配置需要根据应用的需求确定,只暴露需要使用的Header。如果不需要暴露可以不填。大小写不敏感。该项是可选配置项。

缓存时间(秒):浏览器对特定资源的预取请求(OPTIONS请求)返回结果的缓存时间,单位为秒。如果没有特殊情况可以稍大一点,比如60秒。该项是可选配置项。

返回 Vary: Origin:如果实际场景中,同时存在CORS和非CORS请求,或者Origin头有多种可能值时,建议配置Vary: Origin以避免本地缓存问题。

错误排除

报错信息

CORS配置错误会报以下错误:

浏览器出现类似以下错误。

OPTIONS http://bucket.oss-cn-beijing.aliyuncs.com/

XMLHttpRequest cannot load http://bucket.oss-cn-beijing.aliyuncs.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '{yourwebsiet}' is therefore not allowed access. The response had HTTP status code 403.

OSS报以下错误。

AccessForbidden

CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec.

说明:

CORS报错一般是站点类应用导致,浏览器中可以查看请求详情。如Chrome浏览器,按F12打开开发者工具,在Network中查看相应元素。

OSS返回的错误可以通过抓包获取。如使用Wireshark,筛选器可以指定为域名,即[$Bucket_Name].oss-cn-beijing.aliyuncs.com,[$Bucket_Name]为Bucket名称。

OSS返回的错误也可以通过CORS的oss-h5-upload-js-direct调试程序获取。

错误排查

CORS可能出现的错误以下所示。

来源(AllowedOrigin)配置不正确。

Method(AllowedMethod)配置错误。

Allow Header配置错误。

Expose Header配置错误。

调试方法

登录OSS控制台,选择Bucket后,单击权限管理,在跨域设置中单击设置,单击创建规则,进行下述配置。

将来源(AllowedOrigin)设置成*,确认该配置项无误。如果设置成*后可以成功上传,说明是之前的来源(AllowedOrigin)配置错误,请根据规则认真检查。

依次选择“允许 Methods”的全部选项,即GET、PUT、DELETE、POST、HEAD,确认该配置项目无误。

将“允许 Headers”配置成*,确认该配置无误。

将“暴露 Headers”设置为指定值或者不填,确认该项配置无误。

相关文档

适用于

对象存储OSS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值