0

我在 http 中有 ASP.NET MVC Web 应用程序,我想将其转换为 https。我将代码从 http 更改为 https,但在 Internet 上部署后,我遇到了一些 javascript 库错误,例如:

Mixed Content: The page at 'https://MySite/' was loaded over HTTPS, but requested an insecure script 'http://code.jquery.com/jquery-2.1.3.min.js'. This request has been blocked; the content must be served over HTTPS. 

什么是解决方案?

4

2 回答 2

4

启用后HTTPS,您的所有资产也必须被请求HTTPS,否则您会收到混合内容警告,因为安全和不安全的元素都在应该完全加密的页面上提供。切换到HTTPS

<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>

您还可以使用协议相对 URL,即代替:

<!-- this.. -->
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<!-- ..or this -->
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>

您可以改为使用:

<script src="//code.jquery.com/jquery-2.1.3.min.js"></script>

使用协议相对语法,资源将在HTTP从非安全页面请求时加载,并且HTTPS在从安全页面请求时加载。

这样做的缺点是在非安全页面上使用协议相关方案将以非安全方式检索跨域资产。这意味着您可能会错过HTTPS从 CDN 请求(例如)资源时提供的好处,例如通过HTTP/2*. 当你吃饱时HTTPS,这不是一个真正的问题,所以请自行决定使用它。

*HTTP/2不需要使用加密(例如 TLS),但一些实现已经声明它们仅HTTP/2在通过加密连接使用时才支持,目前没有浏览器支持HTTP/2未加密。(HTTP/2 常见问题解答

于 2018-07-12T09:19:40.050 回答
1

当您拥有一个https站点时,您应该通过以下方式加载所有 JavaScript 内容(如果它们是外部链接)https

参考:

https://code.jquery.com/jquery-2.1.3.min.js

代替:

http://code.jquery.com/jquery-2.1.3.min.js

答案就这么简单!

于 2018-07-12T08:43:12.693 回答