通过HTTPS的Ajax GET请求

时间:2013-03-13 02:21:08

标签: javascript ajax https

如何通过 HTTPS 发送ajax GET 请求?

$.get抛出这个:

XMLHttpRequest cannot load https://********. Origin null is not allowed by Access-Control-Allow-Origin. 

是否有另一种方法或一些解决方法可以使其正常工作?

如果我使用 Chrome 导航到网址,我就能得到回复。我认为没有理由不应该为ajax请求工作。

2 个答案:

答案 0 :(得分:31)

如果由于Same Origin Policy您目前在https,则无法向http页面发出AJAX请求。

主机端口方案(协议)必须相同才能使AJAX请求生效。

您可以确保原始页面位于同一主机和方案上,也可以在目标域上实现CORS (cross-origin resource sharing)以允许此特定请求。

答案 1 :(得分:0)

[jQuery v.3.3.1]

我有一个Web应用程序,其中所有资源和流量都通过HTTPS。

然而,我发现由于(Chrome输出),我无法发送$.ajax()或任何特定的$.get$.post等:

拒绝连接到' http://mywebapp/api/mycall'因为它违反了以下内容安全政策指令:" connect-src' self'"。

这是由于HTTPS页面通过HTTP发出了AJAX请求,我发现无法强制使用HTTPS。

什么是疯狂的是什么修复它。调用$.get('/api/mycall/')会输出上述错误,并且#34;拒绝连接到' http://mywebapp/api/mycall'",它会在代码中忽略实际调用中的结束正斜杠。因此,从错误中看起来好像正斜线不在那里。

我已经完成了多次调用,当调用的url中有一个结束斜杠时,每个调用都会失败。如果没有一个,那些相同的都会成功。

所以呼叫$.ajax({ url: '/api/mycall'})有效,而$.ajax({ url: '/api/mycall/'})则没有。