PHP Header()重定向触发IE9 Quirk模式

时间:2013-01-08 17:58:33

标签: php internet-explorer quirks-mode

如果我使用header( 'Location: http://www.example.com/test.php' );将用户发送到test.php。我在IE9控制台中注意到了这一点:

HTML1113: Document mode restart from Quirks to IE9 Standards 
test.php

HTML1115: X-UA-Compatible META tag ('IE=9') ignored because document mode is already finalized. 
test.php

这使test.php上的代码完全陷入困境。

问题

我已经在使用<!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=9">,但我猜测使用PHP header()来重定向会导致问题。

使用PHP header()重定向用户时,有没有办法阻止IE9进入怪癖模式?

其他信息

它进入Quirks模式并返回标准模式,这似乎打破了我在页面上的代码。

用户在test.php中启动,点击验证码上的提交,POST验证.php - 开头就有<?php if (condition){ change some session variables; header(etc); exit();} ?>

2 个答案:

答案 0 :(得分:0)

使用php来回显元刷新重定向而不是php标题似乎已经修复了问题。所有的代码都可以工作,没有怪异的模式可以回到IE9模式,而且不会忽略元。

其他信息

我亲自与一位软件/网络程序员交谈,他不知道为什么会出现这个错误。但是,他的观点是,如果元刷新而不是php标题,那么使用它就没有问题了。

答案 1 :(得分:0)

我正在考虑这个问题,并有一个想法:

对于任何不以<!DOCTYPE>开头的页面,IE9将跳入怪癖模式。

header(...)重定向后面仍然可以进一步输出,这将被视为一个页面。

所以...如果在发送header()之后有任何输出,并且该输出没有以有效<!DOCTYPE>开头,IE9可能会跳转到怪癖模式。

在PHP中,如果代码在header()调用之后继续运行,则会发生这种情况,后续代码中的某些内容会产生某种类型的输出。

如果发生了这种情况,并且您不需要代码在重定向后继续运行(这可能是不寻常的),那么在die();之后立即添加对header()的调用它

希望有所帮助。