混合内容问题 - 不安全的 XMLHttpRequest 端点
Posted
技术标签:
【中文标题】混合内容问题 - 不安全的 XMLHttpRequest 端点【英文标题】:Mixed content issue - insecure XMLHttpRequest endpoint 【发布时间】:2016-03-14 07:53:10 【问题描述】:当我使用 HTTPS 浏览我的网站时,我遇到了混合内容问题。 我从 jQuery 调用 API,但我没有提到协议,所以假设浏览器应该选择与站点浏览相同的协议(http 或 https)。 我的 jquery 代码如下所示:
$.get("/api/Product/GetMore", pageIndex: currentPage )
.done(function(result)
.....
当在 http 中浏览网站并执行所需的操作以获得结果时,它工作正常(能够从 API 调用中获取结果)。 但是当我浏览该站点并尝试在 https 中获取结果时,我在浏览器控制台中遇到了以下错误。即使我使用 https 协议对完整的 API url 进行硬编码,也会发生同样的事情。 混合内容:“https:///product”处的页面是通过 HTTPS 加载的,但请求了不安全的 XMLHttpRequest 端点“http:///api/product/getmore?pageIndex=1”。此请求已被阻止;内容必须通过 HTTPS 提供。
XHR 加载失败:GET "https:///api/Product/GetMore?pageIndex=1"。
如果您有任何解决方案,请告诉我。
谢谢, 沙拉特
【问题讨论】:
您的 API URL 要么重定向到 http 位置,要么 API 发送的数据包含不安全的资源 URL,即我的 2 美分。 您好 Eduardo,我验证了它没有重定向的 API URL。如果我浏览 API URL(例如:mysite/api/Product/GetMore?pageIndex=1),我可以获得结果(能够以 https 或 https 协议获得结果)并且结果包含有效的 URL。 IIS 中是否有任何东西在考虑使用默认 http 协议的相对 URL? 【参考方案1】:为了工作,您需要指定 index.php 以便它知道它正在调用哪个函数。因为这类似于 cUrl 调用它需要完整路径。为了让 call 决定它在哪个协议上,你需要在开始时使用双斜杠。所以试试这个:
$.get("//api/Product/GetMore/index.php", pageIndex: currentPage )
或
$.get("//api/Product/GetMore/", pageIndex: currentPage )
修复了我过去的问题。
【讨论】:
以上是关于混合内容问题 - 不安全的 XMLHttpRequest 端点的主要内容,如果未能解决你的问题,请参考以下文章