我有客户在他们的网页上使用HTML,我提供。 HTML链接到我服务器上的文件(JS,CSS,图像等)。
我给他们的例子:
<link type="text/css" rel="stylesheet" href="http://www.example.org/this.css" />
我刚收到SSL,所以我的网站现在是http s 。但是,当我从服务器请求文件时,我给他们的服务器上的HTML仍然是http。
因此,他们会收到混合内容警告并且内容被阻止。像这样:
混合内容:“https://www.example.org/”页面是通过HTTPS加载的,但是请求了一个不安全的样式表“http://www.example.org/file.css”。此请求已被阻止;内容必须通过HTTPS提供。
我无法让所有客户将其所有网页上的所有链接更改为“http s ”,以防止出现警告/阻止。那将是一场噩梦。
我的主人是GoDaddy。我的服务器是Windows服务器,IIS:7.0,ASP.Net运行时版本:4.0 / 4.5。
如何通过web.config解决这个问题?我目前的规则是:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
我想要发生的是允许所有外部http请求到我的https服务器。
谢谢!
答案 0 :(得分:1)
您可以使用Content-Security-Policy: upgrade-insecure-requests
header。
也可以使用upgrade-insecure-requests
元素指定meta
CSP指令:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
HTTP Content-Security-Policy(CSP)
upgrade-insecure-requests
指令指示用户代理处理所有站点的不安全URL(通过HTTP提供的URL),就像它们已被安全URL(通过HTTPS提供的URL)替换一样)。该指令适用于需要重写大量不安全遗留URL的网站。
upgrade-insecure-requests
指令is supported in all current browsers except Edge。
为了帮助Edge团队为其提供更高优先级的支持,您可以对the related Microsoft Edge Developer feedback issue for it进行评论/评论。
顺便提一下,“'https://www.example.org/'
上的页面是通过HTTPS加载的,但是请求一个不安全的样式表'http://www.example.org/file.css'
”消息并不是任何人只需拥有一个HTML中的<link…href="http://www.example.org/this.css" />
元素用于自己的网站。他们获得该消息的唯一方法是他们直接导航到https://www.example.org/
。