添加 headers 到 307 重定向

Adding headers to 307 redirection

你真的不能 add/modified 307 header 除了位置吗?我正在尝试在 Node.js 中执行此操作,并且似乎新添加的 header 'X-Atlassian-Token': 'no-check' 未被客户端使用。

    res.writeHead(307,
        {
            'Location': 'http://www.mytest.com?os_authType=basic',
            'Content-Type': 'multipart/form-data',
            'X-Atlassian-Token': 'no-check'
        });
    res.end();

有人在 Whosebug 上问过同样的问题,并且有一个人回答了 -

”实际上,通过Java objects,你可以设置请求属性,但不能设置headers。我正在寻找自己的答案。我相信这是一个有意的限制,以防止伪造身份验证令牌和通过 headers 发送的其他信息。 如果我找到解决方案,我会 post 一个解决方案。"

Is it true that you cannot add/modified 307 header except Location?

不,这不是真的。 运行 您的代码显示的响应包括指定的状态代码和额外的 headers:

HTTP/1.1 307 Temporary Redirect
Location: http://www.mytest.com?os_authType=basic
Content-Type: multipart/form-data
X-Atlassian-Token: no-check
Date: Sat, 06 Jun 2015 13:40:41 GMT
Connection: keep-alive
Transfer-Encoding: chunked

如果没有达到您预期的效果,请参阅 this other answer to the same question:

You should also ensure that your response headers refer to that response rather than the resource that the client is being redirected to.

也就是说,X-Atlassian-Token: no-check header 不会 被传送到 follow-up 请求(并且,具体来说,不会'客户端发送)。