0

単純な PHP ページのテキストが、HTTP 経由でアクセスするときれいに見えるのに、HTTPS 経由でアクセスすると歪む理由を理解するのに苦労しています。

ページにはギリシャ語のテキストが含まれ、ファイルのエンコードは UTF-8 で、HTML ヘッダー内に content メタ タグがあります。

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

これの原因は何ですか?

4

1 に答える 1

4

HTTP と HTTPS は通常、Web ページの文字エンコーディングには影響しません。HTTPS はソケット接続を暗号化するだけで、それ以上のことはありません。バイトは Web サーバーから Web ブラウザーにそのまま転送され、暗号化されます。そのため、HTTPS と HTTP で Web ページのレンダリングが異なる場合、Web サーバーは各プロトコルで異なるデータを送信しています。

あなたの特定の状況では、実際にそうです。HTTP では、Web サーバーは UTF-8 でエンコードされた HTML と、文字セットが指定されていない HTTP ヘッダーを送信します。これにより、Web ブラウザーは HTML のタグContent-Type: text/htmlで指定された UTF-8 文字セットを使用できるようになります。meta

ただし、HTTPS では、Web サーバーは代わりに UTF-8 でエンコードされた HTML と HTTPContent-Type: text/html; charset=iso-8859-15ヘッダーを送信しています。HTTP ヘッダーが優先されるため、HTTP ヘッダーの文字セットは、HTML のmetaタグの UTF-8 文字セットをオーバーライドします。HTTPS 配信のContent-Type文字セットを無視し、HTML を強制的に UTF-8 として解釈するよう Web ブラウザーに指示すると、HTTP 配信の Web ページと同じようにレンダリングされます。したがって、問題は、Web サーバーがContent-TypeHTTP ではなく HTTPS のヘッダーで誤った文字セットを送信していることです。どちらの場合も、HTML 自体は問題ありません。そのため、Web サーバーが正しく構成されていないか、HTTPS 経由でデータを送信するときに PHP スクリプトに文字セットのバグがあります。

于 2012-09-19T00:35:48.760 に答える