【问题标题】:Ajax GET request over HTTPS通过 HTTPS 的 Ajax GET 请求
【发布时间】:2013-02-28 19:58:59
【问题描述】:

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

$.get 抛出这个:

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

是否有其他方法或解决方法可以使其正常工作?

如果我使用 Chrome 导航到该网址,我就能得到响应。我看不出它为什么不能通过 ajax 请求工作。

【问题讨论】:

  • 这看起来像是一个跨域问题,而不是 HTTPS。无论您使用什么代码,您都应该在 URL 上提供一些与运行它的页面/站点相关的上下文。
  • 您是使用带有api.jquery.com/jQuery.get 中的详细信息的对象调用$.get 还是仅调用它本身?

标签: javascript ajax https


【解决方案1】:

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

主机端口方案(协议)必须相同,AJAX 请求才能正常工作。

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

【讨论】:

    【解决方案2】:

    [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/') 会输出上述错误并显示“拒绝连接到'http://mywebapp/api/mycall'”,这在代码中的实际调用中省略了结束正斜杠。所以从错误来看,好像没有正斜杠。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2018-06-11
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多