获得SSL,现在所有请求的文件都被阻止(混合内容)

时间:2017-05-23 20:29:41

标签: html windows ssl web-config mixed-content

我有客户在他们的网页上使用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服务器。

谢谢!

1 个答案:

答案 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/