【问题标题】:Can I set the request method via header() method in PHP?我可以通过 PHP 中的 header() 方法设置请求方法吗?
【发布时间】:2014-01-29 07:56:33
【问题描述】:

我已经构建了一个表单,除了基于表单元素值构建一个用于“重定向”用户的 url 之外什么都不做。

该表单包含来自包含国家和每个城市的城市的分类的值。

因此,当用户选择一个国家/地区时,该表单会构建将用户发送到显示该国家/地区所有记录的相应页面的 url。如果用户选择了城市字段,则表单构建的 url 将用户发送到显示该国家记录的相应页面 > 城市。

它使用“post”作为方法的表单。

到这里为止一切正常!

问题是当用户尝试刷新结果页面,或尝试使用后续页面的后退按钮时。

为了解决这个问题,我在将表单提交到同一个表单后尝试将用户重定向,但我担心无休止的重定向。出于这个原因,我想知道是否可以通过header() 函数更改修改请求方法。

这可以帮助我检查$_SERVER[REQUEST_METHOD]是否设置为POST,从而进行重定向。

【问题讨论】:

  • headers() 函数设置 response 标头,而不是 request 标头
  • 算了!!你说的对 !! :(

标签: php http


【解决方案1】:

如果您read up on HTTP headers,您会知道header("Location: ...") 设置了一个状态代码,该代码明确地导致浏览器使用GET 请求,而不是它使用的任何方法。

其实如果你想强制浏览器用同样的方法重新发送请求,你必须手动设置一个状态码308。

所以,别担心 :)

【讨论】:

  • 另外,您应该在header('Location: ...') 之后紧跟die()exit()
  • @phihag 能否提供一些代码显示如何手动设置 308 的状态码?
  • @jkushner 这个问题涉及切换到 GET。如果您想发送 308 并且不知道如何在 php 中执行,为什么不please do ask a new question。这样,未来遇到相同问题的搜索者会找到您的问题并从中受益。如果你愿意,可以给我留言,附上新问题的 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 2020-03-25
相关资源
最近更新 更多