考虑到编写跨域提取数据的服务器端代理的简单性,我不知道最初的意图是阻止客户端AJAX跨域调用。我不是要求推测,我正在寻找语言设计师(或与他们关系密切的人)的文档,因为他们认为他们正在做的事情,而不仅仅是为开发人员带来一些轻微的不便。
TIA
答案 0 :(得分:6)
防止浏览器充当反向代理。假设您正在办公室的PC上浏览http://www.evil.com,并假设该办公室中存在一个内部网,其中包含http://intranet.company.com的敏感信息,只能从本地网络访问。 如果不存在跨域政策,www.evil.com可以使用您的浏览器作为反向代理3>向http://intranet.company.com发出ajax请求,并将该信息发送给www.evil。 com与另一个Ajax请求。
我猜这是限制的原因之一。
答案 1 :(得分:2)
此限制的最重要原因是安全问题:JSON请求是否应该使浏览器服务并接受cookie或安全凭证并请求到另一个域?它与服务器端代理无关,因为它无法直接访问客户端环境。有a proposal for safe sanitized JSON-specific request methods,但它还没有在任何地方实现。
答案 2 :(得分:2)
如果您是myblog.com的作者并且您向facebook.com发送XHR,请求是否会发送您的facebook Cookie凭据?不,这意味着您可以从您的博客请求用户的私人Facebook信息。
如果您创建代理服务来执行此操作,则您的代理无法访问Facebook Cookie。
您可能也在质疑为什么JSONP没问题。原因是你正在加载一个你没写过的脚本,所以除非facebook的脚本决定从他们的JS代码中发送信息,否则你将无法访问它
答案 3 :(得分:1)
直接访问和代理之间的区别是cookie和其他与安全相关的标识/验证信息,这些信息绝对限于一个来源。
有了这些,您的浏览器就可以访问敏感数据。您的代理不会,因为它不知道用户的登录数据。
因此,代理仅适用于公共数据; {是CORS。
答案 4 :(得分:1)
我知道你要求专家的答案,我只是一个新手,这是我的意见,为什么服务器端代理不是一个正确的最终解决方案:
document.domain
页面。对我来说最重要的是:
但是,在重新阅读你的问题之后,我想我仍然没有回答它,所以为什么这个AJAX安全?,我想,答案是:
因为您不希望您访问的任何网页能够将从桌面调用任何计算机或服务器进入您办公室的内部网< /强>