Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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的相同域JSON_Jquery_Json - Fatal编程技术网

Jquery 从HTTP到HTTPS的相同域JSON

Jquery 从HTTP到HTTPS的相同域JSON,jquery,json,Jquery,Json,我在一个非安全页面上有一个登录链接,该链接使用jQuery触发JSON帖子。文章会转到同一个域,但使用安全URL。我对JSON的理解是,它确实允许像这样的跨域操作,但这可能是一个限制 当我运行脚本时,会出现以下javascript错误: 无法加载XMLHttpRequesthttps://.... 起源http://.... 访问控制允许原点不允许 我使用的代码如下,并不复杂: // postURL is something like https://example... // postData

我在一个非安全页面上有一个登录链接,该链接使用jQuery触发JSON帖子。文章会转到同一个域,但使用安全URL。我对JSON的理解是,它确实允许像这样的跨域操作,但这可能是一个限制

当我运行脚本时,会出现以下javascript错误:

无法加载XMLHttpRequesthttps://.... 起源http://.... 访问控制允许原点不允许

我使用的代码如下,并不复杂:

// postURL is something like https://example...
// postData is data to be transmitted
$.getJSON( postURL, postData + "&json=1", function(data) {
    // no error checking yet, just proceed to resultURL
    if ( true ) { window.location = resultURL; }
});
我已经验证过,如果我安全地加载我的源页面,帖子就可以完美地工作,所以唯一的问题是https的差异


有六个左右类似的问题和我的一样,但没有一个答案适合我的情况。也许这只是一个无法解决的限制?

如评论中所述,您正在尝试进行跨源(CORS)XMLHttpRequest。这是因为被定义为的一部分。这是可能的,但需要客户端和服务器在彼此之间传递某些头,以验证是否允许连接

您收到的错误意味着您的服务器没有发送正确的响应头,您无法向其发出CORS XMLHttpRequests。有关大多数浏览器支持的更多实用信息,请参阅

使用jQuery,如果您的服务器支持它,您可以使用发出CORS请求,而不是使用getJSON调用它


另一个选项是使用和脚本标记注入,尽管这仍然会在某些浏览器中根据设置产生安全错误。

这是跨源的。你被同一原产地的政策抓住了。要使其工作,您必须实现CORS、使用服务器端代理、使用协议相关url或使用另一种传输类型,如jsonp。将
https://
替换为
//
,使其成为协议相关请求。有趣的是,谢谢,我甚至不知道CORS存在!