2

(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、すべて問題ありません。

この書類を無効にしたい。text/htmlで受け入れられたヘッダーから削除するにはどうすればよいgoogle chromeですか? それとも私は何か間違っていますか?

UPDBODY終了タグ を削除すると、エラーが表示されます。ブラウザはそのような小さな間違いを気にしないようです。

4

2 に答える 2

4

あなたは問題を誤診しています。

  • accept ヘッダーは、HTML と XHTML が同等に優先されることをサーバーに伝えます。
  • スクリプトは Accept ヘッダーを完全に無視し、XHTML コンテンツ タイプを送信します
  • XML パーサーは、整形式のドキュメントが無効であっても、解析エラーをスローしません。
  • 現在のブラウザー (私が知る限り、しばらくこれを試していません) は、整形式でない XHTML を取得した場合、HTML パーサーにフォールバックします (ページの作成者が作成した型が 99 であることをエンド ユーザーに伝えるため)。 /100 回、役に立たない)。

妥当性エラーを検出したい場合は、ブラウザー (Web ページをレンダリングして作成者のエラーから回復するように設計されたツール) ではなく、バリデーター(それらを検出するために設計されたツール) を使用してください。

于 2013-09-18T10:35:17.683 に答える
0

したがって、結果は text/html として解釈され、すべて問題ありません。

この書類を無効にしたい。Google Chrome で受け入れられたヘッダーから text/html を削除するにはどうすればよいですか? それとも私は何か間違っていますか?

Acceptブラウザーはヘッダーでいくつかのコンテンツ タイプを送信しますが、サーバーは応答でそれらのいずれかを選択することができます。

これはContent-Type、応答にヘッダーを設定することによって行われます (あなたがするように)

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

これにより、応答が XHTML ドキュメントであることをブラウザに伝えます。ブラウザの検証プロセスに影響を与える機会はこれ以上ありません。

クロムは寛容すぎるようで、大文字を受け入れます<BODY>

于 2013-09-18T10:34:42.320 に答える