如题,php 中使用 header("location:http://www.example.com/XXXX"),有时候返回 302,页面直接转跳到对应路径中( URL 也随之变化为目标路径),但有时候就只返回 200,内容时目标地址的内容,但 URL 还是原地址。
到底是什么原因导致这种差异,观察很多次相关代码,也没找到是因为什么导致的。求指点一二。
1
mitu9527 2021-01-15 14:43:56 +08:00
自己去看下 header 函数的手册,看完后我估计你就能找到原因了,就算找不到原因可能也知道该如何解决了。
|
2
elevioux 2021-01-15 14:47:04 +08:00
盲猜应该是前面的代码已经输出了响应头。
看下有没有错误,像 header already sent 之类的 |
3
hbolive 2021-01-15 14:48:50 +08:00
这个时候能怀疑的只能是自己的代码。。
|
4
7DLNU56W OP 我认真观察过很多类似的代码,也看了关于 header 函数的说明,但还是没找到到底是由什么导致的。
我准备晚上专门针对这个问题实验一下,如果有了结果,会在此告知大家的。 PS:我有一种想法,因为 header 函数中有一个要求是此函数前不能输出任何内容,但之前两种情况都没有输出任何内容,不知道后面有输出会不会影响,我初步想针对这个测试一下。 |
5
KasuganoSoras 2021-01-16 00:11:52 +08:00
可以试下 Header("Location: http://www.example.com/XXXX", true, 302) 强制指定 302 状态码,并且覆盖之前的所有 Location 字段
|
6
7DLNU56W OP @KasuganoSoras 并没有效果
|
7
msg7086 2021-01-16 17:47:52 +08:00 via Android
看上去就是已经输出了内容,比如 3 字节的 BOM 头这种不可见的内容。
|
8
7DLNU56W OP @msg7086 我对已经输出内容的问题测试过,故意在 header 前面、后面分别输出内容,结果仍然是 302 转跳,不能导致 200 状态。
目前仍然没有弄明白到底是什么原因导致 200 的,不过我有点怀疑会不会是 web 服务导致的? |
9
dorothyREN 2021-01-17 11:40:58 +08:00
这是在搞微信那个域名检测吧
|