【问题标题】:Adding headers to 307 redirection将标头添加到 307 重定向
【发布时间】:2015-08-20 15:12:04
【问题描述】:

除了 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();

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

Is it possible to set some http headers while http-redirect(302 or 307)?

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

【问题讨论】:

    标签: node.js http redirect http-status-code-307


    【解决方案1】:

    除了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
    

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

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

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

    【讨论】:

    • 我应该更好地表达我的问题。我知道新标头已发送回客户端。我的意思是客户端不会使用我在后续请求中添加到新标头中的所有属性,除了位置一。但感谢您确认客户不会。
    • 否则,您可能会导致客户端使用X-Atlassian-Token: no-check 发出请求,这正是此标头旨在防止的 XSRF 漏洞。
    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2012-10-27
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多