Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在http页面上使用https的Ajax_Jquery_Ajax_Https_Cors - Fatal编程技术网

Jquery 在http页面上使用https的Ajax

Jquery 在http页面上使用https的Ajax,jquery,ajax,https,cors,Jquery,Ajax,Https,Cors,我的站点使用http和https协议;它不会影响内容。我的站点使用jQueryAjax调用,这也会填充页面上的一些区域 现在,我想通过https进行所有ajax调用。(请不要问我为什么:)) 当我在使用https协议的页面上时,ajax请求正在工作。 当我在使用http协议的页面上时,会出现一个javascript错误: 拒绝访问受限URI 我知道这是一个跨域的问题(事实上,这是一个跨协议的问题),我知道我应该在ajax调用中使用与当前页面相同的协议 尽管如此,我还是希望所有ajax调用都是ht

我的站点使用http和https协议;它不会影响内容。我的站点使用jQueryAjax调用,这也会填充页面上的一些区域

现在,我想通过https进行所有ajax调用。(请不要问我为什么:)) 当我在使用https协议的页面上时,ajax请求正在工作。 当我在使用http协议的页面上时,会出现一个javascript错误: 拒绝访问受限URI

我知道这是一个跨域的问题(事实上,这是一个跨协议的问题),我知道我应该在ajax调用中使用与当前页面相同的协议

尽管如此,我还是希望所有ajax调用都是https,并在通过http提供服务的页面上调用它们。
是否有任何解决方法可以实现这一点(一些json/代理解决方案?),还是根本不可能?

您可以尝试在iframe中加载https页面,并通过某个网桥将所有ajax请求路由到框架中/从框架中传出,这是一种解决方法,但可能会奏效(不确定在安全上下文中是否会施加相同的访问限制)。否则,本地http代理来重新路由请求(就像任何跨域调用)将是可接受的解决方案。

可能会解析为不同的虚拟主机(由于未发送主机头,因此响应该IP的默认值),因此这两个主机被视为单独的域,因此受跨域JS限制

可能会让您避免这种情况。

试试JSONP

大多数JS库使其与其他AJAX调用一样简单,但在内部使用iframe进行查询

如果您没有将JSON用于有效负载,那么您必须围绕iframe使用自己的机制


就个人而言,我只是将http://页面重定向到https://one

查看opensource Forge项目。它提供了一个JavaScript TLS实现,以及一些Flash来处理实际的跨域请求:

简而言之,Forge将使您能够从通过http加载到https站点的网页生成XmlHttpRequests。您需要通过服务器提供闪存跨域策略文件以启用跨域请求。查看自述文件末尾的博客文章,以获得关于其工作原理的更深入解释


然而,我应该提到Forge更适合于两个不同https域之间的请求。原因是有潜在的MiTM攻击。如果您从一个不安全的站点加载JavaScript和Flash,它可能会受到危害。最安全的用法是从安全站点加载它,然后使用它访问其他站点(安全或其他)。

从服务器添加访问控制允许源站标头

Access-Control-Allow-Origin: https://www.mysite.com
以下是我的工作:


生成包含要发布的数据的隐藏iFrame。由于您仍然控制该iFrame,因此同一原点不适用。然后将该iFrame中的表单提交到ssl页面。ssl页面然后重定向到包含状态消息的非ssl页面。您可以访问iFrame。

为什么不将ajax与加载页面协议相匹配?他们特别说“请不要问我为什么”。但是为什么您需要带有HTTPS的ajax……例如,一个更动态的签出表单,它在后台连接到paypal这样的支付网关,以便人们可以看到发生了什么。。还有一个可能性是,我尝试了jquery.ajax和jsonp:'jsonp_callback'选项集,但仍然是相同的js错误。也许您必须在URL@user135863您发送查询的端点是否首先支持JSONP?为了我的理智,我将使用您的最后一个选项。。。简单重定向到
https:
阅读此线程后,我会坚持使用JSONP,这是可以做到的,但如果需要来自iFrame的会话cookie,请确保设置P3P头。。。否则MSE会说“nu-uh-uh”很好的回应-但一些使用过的浏览器不支持Opera(一点也不支持)和Internet Explorer(从版本8开始支持)似乎Opera现在支持它:但Opera Mini不支持…这是可以做到的,但如果您需要来自iFrame的会话cookie,请确保设置P3P头。。。否则MSE会在JSON回调上说“nu-uh-uh”死链接:(@Kubie这个答案明天就有十年了,而断开的链接就是为什么我们会问这样的问题,包括足够的信息来生存一个问题。刚刚注意到这十年哈…是的,这是一个很好的点。没关系,如果我找到任何东西,会搜索这个答案并编辑答案吗