我是JS和AJAX的新手,有一天,我尝试了一个跨域AJAX请求。经过一些研究,我发现AJAX不能跨域(原生)工作,因为它是不安全的。
来自维基百科:“这项政策防止一个网页上的恶意脚本通过该网页的文档对象模型访问另一个网页上的敏感数据。”
但是,AJAX如何请求访问“敏感数据”,而使用默认HTTP却不能呢?
发布于 2018-10-31 02:01:11
AJAX请求是HTTP请求。
AJAX代表Asyncronous Javascript和XML。它是以第一个基于浏览器的javascript HTTP客户端API XMLHttpRequest命名的。
HTTP请求本身并不是不安全的,但是某些事情可能会使HTTP请求出现问题。
与“Ajax”请求相关的一个大问题是,至少在过去,HTTP请求可以携带会话/cookie信息。
这意味着如果Ajax请求没有被限制在浏览器沙箱中(跨域),这可能意味着站点A的所有者可以代表用户向站点B发出请求。
我给你发一个evil.example.org的链接。如果不存在跨站点限制,我现在可以为您创建一个HTTP +您与社交网络的会话,并代表您采取行动。
然而,这并不是这个故事的结束。可以进行跨站点请求。这称为CORS请求。
但是:它的工作方式是,你想要向其发出请求的网站的所有者必须允许进入。在我们之前的例子中,这意味着社交网络需要显式地允许"evil.example.org“发出这些类型的请求。
解决此问题的其他方法是:
(使用特定代码)
如果您控制目标服务器,那么最好的选择是只使用CORS。如果你不这样做,你最好的办法就是设置一个你控制的代理。
https://stackoverflow.com/questions/53069635
复制相似问题