2017-03-01 6 views
1

Slim 프레임 워크 (버전 3)을 사용하여 PHP로 작성된 웹 서버에 메시지를 보내려면 일부 헤더를 HttpUrlConnection에 넣어야합니다.왜 PHP 슬림 헤더가 연결되어 있습니까?

연결에 동일한 키가있는 헤더를 추가 할 때 문제가 있습니다. 예를 들어 :

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

나는 나는 키 "myHeader" 단일 헤더 값으로 두 요소의 목록을 보려면, conn.getRequestProperties()시계를 사용하는 경우. 내가 원하는대로.

하지만 웹 서버가 헤더를 제대로 수신하지 못하고 있습니다.

는 I 쓸 경우

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

$values 2 개 요소 목록 아니라, 가치 "value1, value2" 1 개 요소의 목록이다, 즉, 2 개 개의 값이 단일 스트링에 연접. 정말 이상합니다. 나는 Slim documentation에서 읽어

당신은 PSR (7) Request 객체의 대해 getHeader ($ 이름) 방법으로 단일 헤더의 값 (들)을 얻을 수 있습니다. 주어진 헤더 이름에 대해 값 배열 을 반환합니다. 하나의 HTTP 헤더가 두 개 이상의 값을 가질 수 있습니다.

헤더 값을 자동으로 연결하는 방법이 있으며 getHeaderLine이라고합니다. 그리고 나는 그것을 부르지 않을 것이다. getHeader으로 전화합니다.

이 문제가 해결 되었습니까? 내가 뭔가 잘못 됐어?

+0

이 HttpURLConnection의 무엇입니까? 이 헤더에 $ _SERVER의 내용은 무엇입니까? –

답변

1

잡기. 이것은 실제로 버그입니다.

나는 이것을 위해 issue at the Slim Github project을 만들었습니다.

으로 당신이 직접 헤더를 나눌 수있는 해결 방법 :

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

버그가 아닙니다. Slim \ Http의 취급은 Zend \ Diactoros와 동일합니다. –