【问题标题】:XHR response blocked by Chrome, because of mixed content issue (http/https)由于混合内容问题 (http/https),​​XHR 响应被 Chrome 阻止
【发布时间】:2015-09-19 19:43:42
【问题描述】:

我目前正在使用 jQuery AJAX 获取一个相对 URL,它前面没有方案/域(例如“/js/get_international_popup/”。当我在返回之前查看我的位置标头时,响应也是一个相对 URL它。

当我在本地通过 HTTP 进行测试时,一切正常。但是,一旦我在我的实时服务器上测试它,通过 HTTPS 响应就会被 Chrome 阻止,因为它说它不安全:

混合内容:“https://example.com/”处的页面通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点“http://example.com/js/get_international_popup/”。此请求已被阻止;内容必须通过 HTTPS 提供。

从 Chrome 的角度来看,我的本地测试请求/响应通过 HTTP,但我的实时测试请求通过 HTTPS 并获得了 HTTP 响应。我无法在实时服务器上查看 Chrome 的响应,因为它被阻止了。

如果我返回带有绝对 URL(包括 https://domain)的响应,一切似乎都可以正常工作,但我不喜欢使用绝对 URL。

有谁知道是否有办法使用相对 URL 来解决这个问题?

【问题讨论】:

  • 你能把你的ajax调用代码贴出来吗?

标签: jquery ajax google-chrome https mixed-content


【解决方案1】:

使用 javascript 在前面添加:

var relative_url = '/js/get_international_popup/';
var absolute_url = window.location.origin + relative_url;
$.ajax(absolute_url, function(){});

参考: http://www.w3schools.com/jsref/prop_loc_origin.asp

注意: 未测试

【讨论】:

    【解决方案2】:

    有时它可能是由尾部斜杠引起的。将https://example.com/js/get_international_popup/ 更改为https://example.com/js/get_international_popup

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 2015-08-13
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2016-03-01
      • 2020-12-19
      相关资源
      最近更新 更多