我想看到如果我向浏览器发送无效(根据 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/