我在使用asp.net内核的kestrel / nginx上。我有一些不需要https重定向的网址,这就是为什么我有以下nginx conf
server {
listen *:80;
server_name example.com *.example.com;
location / {
add_header Strict-Transport-Security max-age=15768000;
return 301 https://example.com$request_uri;
}
location /DirectDownload/ {
proxy_pass http://example;
limit_req zone=one burst=10 nodelay;
}
}
在Startup.cs中,我有
奇怪的是,这在过去一直有效。不幸的是,响应头并没有告诉我应用程序的哪一部分触发了307 hsts重定向...我明显缺少什么吗?
这是唯一的:80 nginx conf。
感谢您的帮助!
答案 0 :(得分:2)
HSTS适用于整个服务器
https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
服务器通过HTTPS响应标头字段“ Strict-Transport-Security”将HSTS策略传达给用户代理。[1] HSTS策略指定了一段时间,用户代理只能以安全的方式访问服务器。[2]使用HSTS的网站一定不能接受明文HTTP,并且不能通过HTTP连接或系统地将用户重定向到HTTPS。其结果是无法执行TLS的用户代理将无法再连接到该站点。
307响应直接来自Chrome: https://www.troyhunt.com/understanding-http-strict-transport/
这是Chrome所说的“我什至不打算发出该请求,而是将其更改为HTTPS然后再试一次”,这就是我们提出的第二个请求。这很关键:Chrome拒绝通过不安全的HTTP协议发出第一个请求。