【发布时间】:2015-02-05 11:57:33
【问题描述】:
我刚刚发现为了允许跨域 AJAX 调用,Access-Control-Allow-Origin 标头应该设置在 SERVER 端。这让我很沮丧,让我解释一下原因:
1) 典型用例是客户端想要进行跨域请求。我从未听说过服务器试图限制来自外来网页的访问。哦,我记得“防止图片盗链”,这是我托管的一个有趣功能,可以通过发送虚假的“Referrer”标头轻松击败。
2) 即使服务器想要限制来自其他域的连接,使用 HTTP 协议的功能也无法做到这一点。我建议为此使用令牌。
3) 阻止 XMLHttpRequests 有什么用,而您仍然可以使用 jsonp?
你能解释一下为什么会这样吗?
对于仍在阅读的人,有一个额外的问题:
4) 你知道防止来自网页的任何跨域请求的方法吗?想象一个初级 Web 开发人员在包含可能嗅探密码的广告或其他脚本的页面上创建登录表单?这不是网络安全的本质吗?为什么有人在谈论这个?
【问题讨论】:
-
我相信跨域ajax调用的责任完全在于客户端而不是服务器。服务器如何知道请求是否是跨域的?为什么页面可以向恶意服务器发出请求,而无法请求有人忘记放置
Access-Control-Allow-Origin标头的服务器? -
"即使服务器想限制来自其他域的连接,使用 HTTP 协议的功能也是不可能的。我建议为此使用令牌。"如果您可以 AJAX 请求任意跨域内容,您可以获得这些令牌。
标签: javascript ajax security cross-domain cors