为何浏览器要阻止不带 cookie 的跨域请求的响应?
在 Google 页面执行:
xhr=new XMLHttpRequest
xhr.addEventListener('load',()=>console.log('xhr load'))
xhr.open("GET","https://www.baidu.com")
xhr.withCredentials = false; // 不发送 cookie
xhr.send(null)
响应依然被浏览器阻止:
XMLHttpRequest cannot load https://www.baidu.com/.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://www.google.com' is therefore not allowed access.
但是 IE8 里的 XDomainRequest
不发送 cookie,也不会阻止。
想访问一些网站的公开 API,可是这些网站的响应又不带 Access-Control-Allow-Origin,只能用 JSONP,有些不爽。
所以我想问为何浏览器要阻止不带 cookie 的跨域 XHR 请求的响应?有什么安全方面的风险?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.