HTTP 302重定向不携带application / x-www-form-urlencoded

时间:2013-09-13 12:37:13

标签: forms node.js http redirect

当用户提交application / x-www-form-urlencoded的表单并且我的网页收到它时,它会将用户重定向到另一个网址。问题是webbrowser不会再次将application / x-www-form-urlencoded发送到新网址。

有没有办法强制webbrowser再次发送application / x-www-form-urlencoded?

function redirectTo(request, response, site){
    try {
            response.writeHead('302', {'Location': site});
            console.log("redirecting to " + site);
        }
    } catch(ex) {
        // the headers were already sent - we can't redirect them
        console.error("Failed to send redirect", ex);
    }
    response.end();
}

这是代码。

1 个答案:

答案 0 :(得分:5)

您发布的代码不会在服务器上执行重定向,而是返回302响应,该响应指示浏览器根据新位置重定向。当浏览器执行此操作时,它会执行GET请求,而不是POST。这在第一批浏览器中是一个糟糕的实现,但由于向后兼容性仍然如此。引入了新的响应代码(307,308),它强制浏览器保留初始请求的类型。

application/x-www-form-urlencoded仅对POST请求有效,这就是它不被保留的原因。

您可以在维基百科上阅读更多相关信息:http://en.wikipedia.org/wiki/HTTP_302