ホームページ  >  記事  >  バックエンド開発  >  php getallheaders がカスタムヘッダーを取得できません

php getallheaders がカスタムヘッダーを取得できません

WBOY
WBOYオリジナル
2016-06-23 13:13:35905ブラウズ

クライアントがリクエストしたときにカスタム http ヘッダーを追加しました。リクエストは次のとおりです:

カスタム http リクエスト ヘッダー

var_dump(getallheaders);

最初は getallheaders パラメータを通じて取得していましたが、取得されていることがわかりましたいいえ、非常に奇妙です。PHP マニュアルを確認したところ、getallheaders 関数は Apache サーバーのみをサポートしていることがわかりました。そこで、互換性のあるメソッドを見つけました。

if (!function_exists('getallheaders')) {    function getallheaders() {        $headers = array();        foreach ($_SERVER as $name => $value) {            if (substr($name, 0, 5) == 'HTTP_') {                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;            }        }        return $headers;    }}var_dump(getallheaders());

実際、このメソッドは、$_SERVER 変数内で HTTP_ で始まる属性を検索し、その属性の文字列を置換するものです。 $_SERVER 変数の HTTP_USER_ID は、実際には上記のカスタマイズされた User-Id です:

php

の $_SERVER 変数

さらに、カスタム Http ヘッダーに関しては、ヘッダーの命名規則に注意する必要があります。 という名前を付けるときにアンダースコアを使用することはできません。そうしないと、nginx サーバーでは読み取ることができません。その後、いくつかの情報を確認したところ、後の http プロトコルではこれを行うことは推奨されていないことがわかりました。参照アドレス:

http://stackoverflow.com/questions/3561381/custom-http-headers-naming-conventions

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。