【问题标题】:is response.redirect always an http GET response?response.redirect 总是一个 http GET 响应吗?
【发布时间】:2011-06-17 17:39:44
【问题描述】:

response.redirect 总是一个 http GET 响应吗?或者它可以是 POST?....

【问题讨论】:

  • 您需要给我们一些背景信息。什么是编程语言; response等是什么
  • 它的 asp.net,谢谢 然后将其添加到您的问题中。

标签: asp.net http redirect get response


【解决方案1】:

Response.redirect 仅使用 GET..它不能是一个帖子..介于两者之间的语言是什么?

【解决方案2】:

重定向是发送给客户端的 Http 响应。响应包含一个名为 Location 的 Http Header,它必须包含一个绝对 url。

然后客户端针对这个 url 发出一个 GET 请求。

所以,不,POST 不是一个选项。

更多详情在这里:http://en.wikipedia.org/wiki/URL_redirection

【讨论】:

  • 然后客户端针对这个 url 发出一个 GET 请求。不一定必须是 GET 请求。例如在 307 重定向之后,它应该是原始的 http 方法。
【解决方案3】:

在大多数 API 中,标准重定向实现执行 302,这确实是每个定义的 GET。根据您熟悉 ASP.NET 的问题历史,我也会添加 Java Servlet 的示例。

ASP.NET:

Response.Redirect("http://google.com");

小服务程序:

response.sendRedirect("http://google.com");

它将响应状态隐式设置为 302,并将Location 标头设置为给定的 URL。

当前请求是一个POST请求并且你想用POST重定向,那么你需要一个307重定向。这不是标准 API 提供的,但通常只需设置适当的响应状态和标头即可。

ASP.NET:

Response.Status = "307 Temporary Redirect";
Response.AddHeader("Location", "http://google.com");

小服务程序:

response.setStatus(307);
response.setHeader("Location", "http://google.com");

请注意,这将在请求最终用户确认将 POST 数据发送到另一个位置的普通客户端上发出安全/确认警告。

【讨论】:

  • 如何使用response.setHeader("Location","other server site.com")发送请求参数
【解决方案4】:

假设您使用的是 asp.net,也许 server.transfer 可能是您正在搜索的内容。您可以将处理传递到另一个页面并保持表单状态,而不是将新 url 发送回客户端。

【讨论】:

    【解决方案5】:

    与这里的大多数答案相反,重定向的 HTTP 请求是 only GET if

    • 原始请求是 GET,或者
    • 状态码是 303,或者
    • 状态码为 301 或 302,原始请求为 POST。

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2011-05-15
      相关资源
      最近更新 更多