通过阿里云CDN跨域访问时发生报错的解决方法
问题描述
•问题场景一:CDN配置的加速源站中,请求携带“credentials”参数发生报错。
•问题场景二:CDN加速OSS时,客户端请求时发生报错。
报错内容如下。
问题原因
•问题场景一:CDN配置的加速源站中,没有在请求头和源站的响应头中配置“credentials”参数。
•问题场景二:CDN加速OSS时,OSS不支持设置HTTP响应头“Access-Control-Allow-Credentials”。
解决方案
•问题场景一:CDN配置的加速源站中,需要源站设置返回头中有参数“Access-Control-Allow-Credentials:true”。
•问题场景二:CDN加速OSS时,在请求时不要设置“Access-Control-Allow-Credentials”参数,如果无法修改请咨询阿里云技术支持,以申请配置域名的HTTP头“Access-Control-Allow-Credentials:true”。
更多信息
Access-Control-Allow-Credentials参数说明
•“Access-Control-Allow-Credentials”响应头表示是否可以将对请求的响应暴露给页面。返回“true”则可以,其他值均不可以。
•“credentials”可以是Cookies、Authorization headers或TLS client certificates。当作为对预检请求的响应的一部分时,表示是否为真正的请求可以使用“credentials”。注意简单的“GET”请求没有预检,所以如果对资源的请求带了“credentials”,返回这个资源时,响应就会被浏览器忽视,不会返回到web内容。
•“Access-Control-Allow-Credentials”响应头在工作中与“XMLHttpRequest.withCredentials”或Fetch API的“Request()”构造器中的“credentials”选项结合使用。必须在前后端配置“credentials”,即“Access-Control-Allow-Credentials”header、XHR和Fetch Request中都要配置,才能使携带“credentials”的CORS请求成功。
适用于
•CDN
我有话说: