0

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

有没有办法强制浏览器再次发送 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();
}

这是代码。

4

1 回答 1

6

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

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

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

于 2013-09-13T14:53:45.953 回答