栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jQuery-如何删除跨域限制

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jQuery-如何删除跨域限制

同源政策

您正试图规避“
同源政策”。它内置于每个浏览器中,通常不是您可以或不应该禁用/解决/其他的东西。这是您的站点,用户和用户浏览器之间非常重要的安全合同。

CORS(可能)

CORS允许您的Web服务器告知浏览器/客户端允许访问另一个域。这是通过Web服务器输出以下HTTP标头来完成的

 Access-Control-Allow-Origin: http://www.example.com

如果无法控制HTTP标头,则不能使用CORS。这的实现是特定于语言/框架的。

请注意,由于IE8 /
9的支持有限,因此应检查以确保浏览器兼容。另请注意,这是潜在的攻击媒介。如果您不负责任地使用响应数据,它允许来自第三方网站的响应执行XSS攻击。

JSONP(可能)

JSONP是通过动态添加

script
标签(
src
等于
"yoururl.com?<yourparameter data>"
页面)的标签 来动态地在服务器之间传递和获取数据的聪明方法。这是没有Web代理(请参见下文)或applet(Flash /
Java)而实现这一壮举的唯一合法方法。但是,如果您不是请求两端的提供者,则确实存在安全隐患。请记住,JSONP允许远程服务器在您的上下文中执行代码,并且您应该非常谨慎地将权限授予谁。

“香草” AJAX(不可能)

如果您不使用JSONP来获取数据,那么您很可能会尝试使用AJAX请求来获取数据。AJAX请求也要遵循“相同来源策略”。Javascript库(例如jQuery,Prototype,Dojo等)不能规避此策略作为Ajax请求的基本行为。但是,它们可以支持JSONP(现在记住,它不是AJAX)。

带有Web代理的AJAX(可能)

如果确实要从其他服务器请求数据,则可以转发您的请求。您的主站点的服务器将充当代理。您将需要向自己的服务器发出AJAX请求,然后该服务器端代码将向另一个域发出请求,然后通过AJAX调用响应将响应发送到脚本。

这是一种常见的模式,在此将其详细描述为Web代理模式和此处的对价格友好的Yahoo 模式(但请记住,它是特定于Yahoo的,仅需大致理解即可)。但是,它取决于服务器端语言。总体实现是相同的,但是执行此操作的代码将根据您选择的服务器端语言(PHP,Ruby,Python,C等)而有所不同。某些语言已经具有支持这种模式的库/模块/等。

Flash(可能,非默认)

处于默认状态的Flash不支持跨域请求。可以使用跨域策略文件在Flash7
+中将其打开,但强烈建议您不要使用。您的脚本必须与带有Flash API的接口连接,这将发出请求并将数据返回到Javascript。

Java Applet(可能,非默认)

Java也受相同的原始策略的约束,但是与Flash
的发行版中所述的工作类似。

其他各种“骇客”

那里还有其他黑客,但是它们通常需要您控制两端或具有商定的通信标准。例如“ window.name”黑客。我不建议大多数这些方法。

其他解决方案

有人问过类似的另一个问题。它概述了我没有介绍的其他一些方法:规避同源政策的方法

最好的解决方案

  1. CORS-如果您信任第三者
  2. 网络代理-如果您不这样做

您自己域上的Web代理可以允许您清理正在检索的数据,它为用户提供了最大的保护。但是,如果您执行零环境卫生措施,那么它不会比这里概述的任何方法更加安全。如果您确实实现某种形式的Web代理,请确保其请求仅限于您想要的站点或来自您希望访问的站点。否则,您实际上将创建一个开放代理,如果发现该代理,用户可能会滥用该代理,从而使您陷入法律麻烦。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号