php - 如何更改谷歌浏览器的接受 header ?

标签 php header xhtml mime-types

我想看到如果我向浏览器发送无效(根据 XHTML 标准)标记将会发生的错误。我使用 google chrome 作为浏览器,apache 作为服务器,php 作为脚本语言。我创建了一个包含以下几行的脚本:

header('Content-type:  application/xhtml+xml');

$content = <<< XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
   <title>XHTML</title>
 </head>
 <BODY>
   <P>Lorem ipsum dolor sit amet...</P>
 </BODY>
</html>
XHTML;

echo $content;

它应该是不正确的,因为 BODY 来自大写字母。 但我得到了正确的结果,因为我看到 google chrome 接受这样的 mime 类型:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

因此它将结果解释为 text/html 并且一切都很好。

我想让这个文档无效。如何从 google chrome 接受的 header 中删除 text/html?还是我做错了什么?

UPD 当我删除关闭 BODY 标签时,我可以看到一个错误。看来浏览器并不关心这样的小错误。

最佳答案

您误诊了问题。

  • accept header 告诉服务器 HTML 和 XHTML 同等优先。
  • 您的脚本完全忽略接受 header 并发送 XHTML 内容类型
  • XML 解析器不会对格式良好的文档抛出解析错误,即使它们无效
  • 当前的浏览器(据我所知,我有一段时间没有尝试过这个)如果得到格式不正确的 XHTML(因为告诉最终用户页面作者创建了一个类型)将回退到 HTML 解析器是,99/100 次,没有帮助)。

如果您想检测有效性错误,请使用 validator (这是一个旨在检测它们的工具)而不是浏览器(这是一个旨在呈现网页并从作者错误中恢复的工具)。

关于php - 如何更改谷歌浏览器的接受 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18869823/

相关文章:

HTML 和 XSLT 转换

html - 使图像的一部分可点击

php - 将 UTC 偏移量转换为时区或日期

php - Google Glass PHP 快速入门项目不断要求离线访问

php - 这个php代码安全吗?

javascript - 动态更改 HTML DOM 元素名称

javascript - mssql中数据删除成功与否后如何显示警告框

javascript - 针对 Mobile + CSS 类的 jQuery?

c++ - 如何使用头文件?

C++将 namespace 使用到嵌套的相同 namespace 中