重定向到页面并发送自定义HTTP标头

Len*_*nie 7 php redirect http

我使用以下代码重定向到PHP中的页面.我需要设置自定义HTTP标头以与重定向一起传递.

header("Location: http://...");
Run Code Online (Sandbox Code Playgroud)

我该如何存档?

sep*_*ehr 41

我担心,所有的答案都是错误的和误导性的!

无论您使用何种语言或框架,都无法重定向到设置了自定义标头的页面.换句话说,无法触发HTTP重定向并导致客户端(浏览器)添加自定义标头.

您可能认为使用多个header()调用应该可以正常工作.但事实并非如此.您正在为响应设置自定义标头,指示浏览器重定向,而不是重定向本身.

站点指示浏览器使用自定义标头发出HTTP请求的唯一方法是使用Javascript和XMLHttpRequest对象.它需要在目标服务器上实现CORS才能允许这样的ajax请求.

请注意,页面无法设置HTTP请求标头,除非它正在使用异步请求XMLHttpRequest.这意味着您无法在客户端使用自定义标头进行此类重定向.

这不是网络的运作方式.


hak*_*kre -19

这个问题需要以不同的方式回答,因为根据您寻找的答案不同:

重定向响应 (PHP)

至于您关心重定向响应(而不是重定向响应可能触发的请求)

多个header文档调用:

header("Location: ....");
header("Header2: ....");
header("Header3: ....");
...
Run Code Online (Sandbox Code Playgroud)

由重定向响应触发的新请求(浏览器、HTTP 客户端)

如果您正在查找由重定向响应触发的新请求,请参阅您的 HTTP 客户端技术文档以了解您的选项。

Location:通常,HTTP 客户端不提供任何此类选项,即,如果响应标头之一是3xx 范围内的标头和状态代码,大多数 HTTP 客户端不会将响应标头转换为请求标头。

无论如何,这没有任何意义,因为这种做法是不安全的。

特别是在交互式 HTTP 客户端(如浏览器)级别上,无需用户批准即可自动执行重定向。请参阅HTTP,比较Fetch API


进一步阅读:https://ec.haxx.se/http/http-redirects

  • 它不起作用,因为您无法为重定向设置自定义 HTTP 标头。绝不! (8认同)
  • 什么对你不起作用?请发布您的代码。我无法凭空猜出你做错了什么。 (2认同)