如何通过 HTTPS 发送ajax GET 请求?
$.get
抛出这个:
XMLHttpRequest cannot load https://********. Origin null is not allowed by Access-Control-Allow-Origin.
是否有另一种方法或一些解决方法可以使其正常工作?
如果我使用 Chrome 导航到网址,我就能得到回复。我认为没有理由不应该为ajax请求工作。
答案 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/'})
则没有。