通过 HTTPS 的 Ajax GET 请求

IT技术 javascript ajax https
2021-02-20 05:19:01

如何通过HTTPS发送 ajax GET请求

$.get 抛出这个:

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

有没有另一种方法或一些解决方法来使这个工作?

如果我使用Chrome导航到 url,我就能得到响应。我看不出为什么它不能在 ajax 请求上工​​作。

2个回答

你不能让一个Ajax请求的https,如果你是在当前页面http,因为的同源策略

主机端口方案(协议)必须在为了使AJAX请求工作是相同的。

您可以确保原始页面位于同一主机和方案上,或者在目标域上实施CORS(跨源资源共享)以允许此特定请求。

[jQuery v.3.3.1]

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

然而,我发现我不能发送$.ajax()或任何特定的$.get$.post等因(Chrome的输出):

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

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

疯狂的是什么修复了它。调用$.get('/api/mycall/')输出上述错误“拒绝连接到‘ http://mywebapp/api/mycall ’”,在代码的实际调用中省略了结尾的正斜杠。因此,从错误看来,好像没有正斜杠。

我已经进行了多次调用,当被调用的 url 中有一个结束斜杠时,每个调用都失败了。同样的人都成功了,没有之一。

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