无论我尝试什么,我都无法让我的网站通过 http/2 提供文件(例如图像、js 等),它只是继续通过 http/1 提供服务。
我尝试过的:
-
使用 IIS Crypto 我将其设置为此(甚至禁用 tls1.0 和 tls1.1):
-
通过 Internet Explorer 设置取消选中 tls1.0 和 tls1.1 支持:
-
通过 web.config 强制使用 https:
<!-- Redirect HTTP to HTTPS on www --> <rule name="Force HTTPS on www" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" /> </rule>
-
授予 IIS_IUSRS 组对根目录的读取权限
-
为我的网站启用匿名身份验证
-
我的网站有 https 绑定:未选中“禁用 HTTP/2”,选中“需要服务器名称指示”,绑定到端口 443,IP 地址设置为“全部未分配”
更新 1
-
尝试过h21:
h2i
正在连接到 …
已连接到 123.123.123.123:443
协商协议“h2”
正在发送:[]
h2i> ←[5D←[K[FrameHeader SETTINGS len=18]
h2i> ←[5D←[K [MAX_CONCURRENT_STREAMS = 100]
h2i> ←[5D←[K [UNKNOWN_SETTING_16 = 2]
h2i> ←[5D←[K [INITIAL_WINDOW_SIZE = 1048576]
h2i> ←[5D←[K[FrameHeader WINDOW_UPDATE len=4]
h2i> ←[5D←[K Window-Increment = 983041
h2i> ←[5D←[K[FrameHeader SETTINGS flags=ACK len=0]
h2i> -
我的服务器上未安装 IIS 应用程序请求路由
-
我通过 SSL Labs 验证了 SSL/TLS 设置和证书与 HTTP/2 的兼容性。它显示“TLS 1.2 > h2”,现代浏览器显示“TLS 1.2”。只有旧浏览器才会显示“TLS 1.2 > http/1.1”
-
我没有使用任何 CDN 或反向代理
-
我的 applicationhost.config 是这样的:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="image/svg+xml" enabled="true" />
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
</dynamicTypes>
</httpCompression>
- 我的 web.config 如下所示:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" /> <!-- 365 days -->
</staticContent>
- 我的和 example.com 在 IIS 中正确绑定
- “Get-ItemProperty -Path “HKLM:\System\CurrentControlSet\Services\HTTP\Parameters” -Name Http2Enabled”表示Http2Enabled设置为1
- 我尝试
curl
了其中一个出现问题的文件:`-I –http2
HTTP/1.1 200 OK
Cache-Control: max-age=31536000
Content-Length: 44124
Content-Type: application/javascript
Last-Modified: Tue, 24 Sep 2024 18:29:47 GMT
Accept-Ranges: bytes
ETag: "5ec25bcafedb1:0"
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Strict-Transport-Security: max-age=63072000; includeSubDomains
Date: Sun, 29 Sep 2024 19:52:10 GMT
3
–
–
curl -vso /dev/null --http2 https://www.example.com/js/_myfuncs.min.js?v=1
please 运行 curl。Cloudflare 在那篇文章中明确说明了这是正确的命令。–
|