2017-03-01 7 views
1

スリムフレームワーク(バージョン3)を使用してPHPで書かれたWebサーバーにそれらを送るために、いくつかのヘッダーをHttpUrlConnectionに入れる必要があります。PHPのスリムヘッダーが既に連結されているのはなぜですか?

接続に同じキーのヘッダーを追加すると、問題が発生します。例えば :

HttpUrlConnection conn = createConnectionSomeHow(); 
conn.addRequestProperty("myHeader", "value1"); 
conn.addRequestProperty("myHeader", "value2"); 

Iはconn.getRequestProperties()時計を使用する場合、Iキー"myHeader"有する単一のヘッダ値として2つの要素のリストを参照してください。ちょうど私がしたい。

しかし、私のWebサーバーはそのヘッダーをうまく受信していません。

私が書く場合:

$values = $request->getHeader('myHeader'); 

$valuesは、それは、一つの文字列に連結し2つの値の値"value1, value2"と1つの要素のリストだ、2つの要素のリストではありません。 これは本当に奇妙です。私はSlim documentationから読み取る:

あなたがPSR 7 Requestオブジェクトの のgetHeader($ name)メソッドを単一のヘッダの値(複数可)を取得することができます。これは、指定された ヘッダー名に対してという値の配列を返します。 1つのHTTPヘッダーに複数の 値があることに注意してください。

ヘッダーの値を自動的に連結するメソッドがあり、getHeaderLineと呼ばれます。そして私はそれを呼んでいない。私はgetHeaderに電話しています。

この動作は正しいですか?何か間違っていますか?

+0

HttpURLConnectionのは何ですか?このヘッダの$ _SERVERには何が入っていますか? –

答えて

1

良いキャッチ。これは実際にはバグです。

私はissue at the Slim Github projectを作成しました。

としては、あなたが自分でヘッダを分割することができ策:

$values = explode(',', $request->getHeaderLine('myHeader')); 
+0

バグではありません。 Slim \ Httpの処理はZend \ Diactorosと同じです。 –

関連する問題