向 307 重定向添加标头

KMC*_*KMC 5 redirect http node.js http-status-code-307

除了 Location 之外,是否真的不能添加/修改 307 标头?我正在尝试在 Node.js 中执行此操作,并且客户端似乎未使用新添加的标头 '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();
Run Code Online (Sandbox Code Playgroud)

有人在 Stackoverflow 上问了同样的问题,其中一个人回答说:

是否可以在 http 重定向(302 或 307)时设置一些 http 标头?

“实际上,通过 Java 对象,您可以设置请求属性,但不能设置标头。我自己正在寻找这个问题的答案。我相信这是一个故意的限制,以防止伪造身份验证令牌和通过标头发送的其他信息。我将发布如果我找到解决方案的话。”

Joe*_*Joe 4

除了 Location 之外,是否真的不能添加/修改 307 标头?

不,这不是真的。运行代码会显示一个响应,其中包括指定的状态代码和额外的标头:

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
Run Code Online (Sandbox Code Playgroud)

如果这没有达到您预期的效果,请参阅同一问题的其他答案

您还应该确保您的响应标头引用该响应而不是客户端重定向到的资源。

也就是说,X-Atlassian-Token: no-check标头不会被传递到后续请求(具体来说,不会由客户端发送)。

  • 我应该更好地表达我的问题。我知道新的标头已发送回客户端。我的意思是,除了位置一之外,客户端不会使用我在后续请求中添加到新标头中的所有属性。但感谢您确认客户不会。 (3认同)