Contributed by
Paweł Smoliński
in #26213.
在 web 程序中使用 301 HTTP 状态码来实现永久重定向是很常见的,而 302 状态码则是临时重定向。但是,这些重定向类型有一个问题是,因历史原因而重定向时, POST 请求被转换成 GET 请求(重定向到一个 POST 请求无法在老旧浏览器中工作)。
为了解决这个问题, HTTP 协议引入了两个全新的状态码:
307(临时重定向): 定义在 RFC 7231 中,类似于302(Found), 除了它不允许把POST请求method 改成GET。308(永久重定向): 定义在 RFC 7538 中,类似于301(Moved Permanently), 除了它不允许把POST请求 method 改成GET。
在 Symfony 4.1 中,通过把全新的 keepRequestMethod 参数添加到 redirectAction(),以及 RedirectController 中的 urlRedirectAction() 方法中,我们增加了对这些新的重定向类型的支持。你也可以在路由定义中把它作为 keepRequestMethod 的选项来使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | route_301:
# ...
defaults:
# ...
permanent: true
route_302:
# ...
defaults:
# ...
permanent: false
route_307:
# ...
defaults:
# ...
permanent: false
keepRequestMethod: true
route_308:
# ...
defaults:
# ...
permanent: true
keepRequestMethod: true |
4.2翻译中
