如果我向浏览器发送无效(根据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-types:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
所以它将结果解释为text/html
,一切都很好。
我想让这个文件无效。如何从text/html
的已接受标头中删除google chrome
?或者我错了什么?
UPD
当我删除关闭BODY
标记时,我可以看到错误。似乎浏览器不关心这样的小错误。
答案 0 :(得分:3)
你误解了这个问题。
如果要检测有效性错误,请使用validator(用于检测它们的工具),而不是浏览器(用于呈现网页并从作者错误中恢复的工具)。
答案 1 :(得分:0)
所以它将结果解释为text / html,一切都很好。
我想让这个文件无效。我如何从google chrome中接受的标题中删除text / html?或者我错了什么?
虽然浏览器会在Accept
标题中发送多种内容类型,但服务器仍然可以在响应中选择其中一种。
这是通过在响应中设置Content-Type
标题(正如您所做)
header('Content-Type: application/xhtml+xml');
这告诉浏览器响应是XHTML文档。您没有机会影响浏览器验证过程。
似乎chrome过于宽容并接受大写的<BODY>
。