非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行。
简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向。
中间服务器应当同样配置相关 CORS 响应头。
中间服务器设置
当跨域请求被重定向时,中间服务器返回的 CORS 相关的响应头应当与最终服务器保持一致。 任何一级的 CORS 失败都会导致 CORS 失败。这些头字段包括Access-Control-Allow-Origin, Access-Control-Allow-Credentials等。
响应 preflight 的头字段包括Access-Control-Allow-Headers, Access-Control-Allow-Methods等。 因为 preflight 不允许重定向(见下文),所以中间服务器也就不必管这些 preflight 头字段。
如果中间服务器未设置Access-Control-Allow-Origin,在 Chrome 中的错误信息为:
XMLHttpRequest cannot load http://mid.com:4001/redirect.
Redirect from 'http://mid.com:4001/redirect' to 'http://index.com/access-control-allow-origin-wildcard'
has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://index.com:4001' is therefore not allowed a