PHP 関数 header(); による content-type の設定に問題があります。私の完全なコードは出力を送信しません。応答オブジェクトのみがそれを行います。すべての出力の前に、ヘッダーを送信します。Accept-Header に応じて、Content-Type を設定し、適切な出力を行います。簡単な方法では次のようになります。
switch($aceptHeader){
case 'text/html':
#and some othe stupid acept-headers of the ie
$this->setHeader('Content-Type: text/html; charset=".."');
$this->sendHeaders();
$this->sendDefault();
break;
case 'application/json':
$this->setHeader('Content-Type: application/json');
$this->sendJSON();
break;
case 'application/xml':
$this->setHeader('Content-Type: application/xml');
$this->sendXML();
break;
}
setHeader のメソッドは配列のみを埋めます。これは foreach ループによって header() に入れられます。関数。$this->setHeader()
これは重要ではありません。変更して直接試してみたheader('Content-Type..');
ところ、同じ結果が得られました (後で)。出力は、twig テンプレートによる配列のレンダリングだけです。これが唯一の出力です。ヘッダーの設定は問題ではありません。を実行すると、肯定的な結果が得られますprint_r(header_list());
。そこには、前に設定したヘッダーが正確に表示されます。ほとんどすべてのブラウザーで同じ応答ヘッダーが表示されますが、すべてではありません。これが、w3cバリデーター(およびその他のツール)でページをテストした理由です。すべてが同じ結果を示しました:
Content-Type ヘッダーを取得しません
私の間違いは何ですか?ヘッダーを設定する前に何か間違いがありますか? - id はワイルドなインクルードなどを行いません - ヘッダーの設定に問題はありません - リクエストとレスポンスの間でモデルで変更する唯一のヘッダーは http ステータスであり、その後$response-send();
にほぼ毎回 in が続きます。
小枝テンプレートのレンダリング中にヘッダーが操作される可能性はありますか?
問題は、header() 関数による content-type ヘッダーの設定を妨げる可能性があるものは何ですか?
興味深いのは、次のコードを index.php の先頭に追加することです。
header('Content-Type: text/html');
echo 'test';
exit;
そして、すべての検証ツールでグリーンテストを取得します。ヘッダーが送信されました。
コード全体を調べて、ヘッダーを失った場所を調べることもできますが、これは長い道のりになる可能性があります。同じ問題を抱えている人、または私が間違ったことを想像できる人はいますか?
これは似たような例にすぎません。switch ブロックは問題ではなく、sendHeader も問題ではありません。原因は、ヘッダーを直接設定することで、午後全体でさまざまなケースでそれらを置き換えたからです-毎回同じ結果が得られました。
これらの出力スイッチをさまざまなケースに使用しましたが、毎回正常に動作します。jQuery の $.ajax() が文字列ではなく json として受け入れるヘッダーを付けて、json を送信します。RESTful api 用の xml を作成しました。これは正常に動作し、必要な形式でデータを送信します。バリデータ ツールと ie8 だけが気に入らない。そして、私はその理由を理解していません...