关于CORS报错语句解析及XMLHttpRequest请求来源的疑问
关于CORS报错措辞细节的解析
先看完整报错内容:
Access to XMLHttpRequest at 'https://microsoft.com' (redirected from 'https://apple.com') from origin 'https://apple.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
问题解答
该报错是否表示Microsoft接收或发送了XMLHttpRequest?
Microsoft只是接收了这个XMLHttpRequest请求,并没有发送。请求最终的目标地址是https://microsoft.com,但它是从原本的https://apple.com请求重定向过来的。XMLHttpRequest的发起方是否为Apple?
发起方确实是https://apple.com。报错里的from origin 'https://apple.com'明确指出了请求的来源域名——也就是发起这个XMLHttpRequest的页面所在的域名就是apple.com。
补充逻辑说明
整个流程是:apple.com的页面发起请求到自身域名https://apple.com,但该请求被服务器重定向到了https://microsoft.com。由于重定向后请求的目标域名和来源域名不同(跨域),浏览器会自动发送预检请求(preflight)到microsoft.com的服务器,而microsoft的服务器返回的响应中缺少Access-Control-Allow-Origin头,不符合CORS规则,因此浏览器拦截了这个请求,抛出了上述错误。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

