相关疑难解决方法(0)

什么是"升级 - 不安全请求"HTTP标头?

我向HTTP(非HTTPS)网站发出了POST请求,检查了Chrome开发者工具中的请求,发现它在将其发送到服务器之前添加了自己的标头:

Upgrade-Insecure-Requests: 1
Run Code Online (Sandbox Code Playgroud)

在搜索之后Upgrade-Insecure-Requests,我只能找到有关发送标头的服务器的信息:

Content-Security-Policy: upgrade-insecure-requests
Run Code Online (Sandbox Code Playgroud)

这似乎是相关的,但仍然非常不同,因为在我的情况下,CLIENT在请求中发送标头,而我发现的所有信息都与SERVER在响应中发送相关标头有关.


那么为什么Chrome(44.0.2403.130米)会添加Upgrade-Insecure-Requests我的请求以及它的作用是什么?


更新2016-08-24:

此标题已被添加为W3C候选推荐标准,现已正式认可.

对于那些刚刚遇到这个问题并且感到困惑的人来说,Simon East 的出色答案很好地解释了这一点.

Upgrade-Insecure-Requests: 1头曾经是HTTPS: 1 在之前的W3C工作草案,并改名悄然由镀铬前的变化成为正式受理.

(在此过渡期间,当此标题上没有官方文档且Chrome是唯一发送此标题的浏览器时,会询问此问题.)

google-chrome http http-headers upgrade-insecure-requests

214
推荐指数
2
解决办法
12万
查看次数

Amazon Elastic负载均衡器未填充x-forwarded-proto标头

我试图强制所有http请求到https请求,我正面临问题,因为弹性负载均衡器没有在请求中填充x-forwarded-proto标头.

这是我正在使用的代码,因此导致重定向循环.我该如何解决这个问题?

app.use (function (req, res, next) {
    console.log('Request headers = ' + JSON.stringify(req.headers));
    console.log('Request protocol = ' + JSON.stringify(req.protocol));
    var schema = (req.headers['x-forwarded-proto'] || '').toLowerCase();
    if (schema === 'https') {
       next();
    } else {
       res.redirect('https://' + req.headers.host + req.url);
    }
});
Run Code Online (Sandbox Code Playgroud)

load-balancing amazon-ec2 amazon-web-services node.js express

6
推荐指数
1
解决办法
7003
查看次数