2014-07-18 4 views
0

현재 프로젝트의 RESTful API에 연결하려고하는데, SignIn 함수를 사용하여 쿠키로 사용할 인증 토큰을 반환합니다. 우리 프로젝트의 대부분은 C#으로 작성되었지만 PHP에서 SignIn 메서드를 만들려고하고 있는데 문제가 발생했습니다.PHP - setrawcookie()가 false를 반환했습니다.

인증 토큰을 API에서 문자열로 가져올 수 있지만 그 문자열을 쿠키 값으로 설정할 때마다 가져온 쿠키에 잘못된 문자가 포함됩니다. 예를 들어

는 우리의 RESTful API에 로그인 절차에 대해 설정된 쿠키는 다음과 같습니다

1DEbKeyynVTbXeRJ2i5j2+UgwgmuD17VgQ 

그러나 이기에, setcookie() 나 제공을 사용할 때 얻을 쿠키 ...

1DEbKeyynVTbXeRJ2i5j2%2BUgwgmuD17VgQ 

"+"문자가 "% 2B"(으)로 바뀌고 있습니다. setrawcookie()를 사용하는 방법을 들어 본 적이 있지만 setrawcookie()는 false를 반환합니다. setcookie()는 true를 반환합니다.

이 작동하지 않습니다

$result = curl_exec($ch); 
echo setrawcookie("authtoken", $result, 0, "/", "www.arbitratum.com", 1); 

이 작업을 수행하지만, + 대신에 나에게 % 2B를 제공합니다.

$result = curl_exec($ch); 
echo setcookie("authtoken", $result, 0, "/", "www.arbitratum.com", 1); 

왜 이것이 작동하지 않는지 알 수있는 사람이 있습니까? 아니면 내 쿠키에 올바른 문자를 어떻게 얻을 수 있습니까? $ 결과 문자열을 에코 할 때 브라우저에 표시되는 문자열에 올바른 "+"문자가 사용되므로 문제가 무엇인지 혼동합니다.

+0

질문 제목은 질문의 내용과 아무런 관련이 없습니다. – Sisir

답변

1

쿠키는 URL 인코딩되므로, +%2B으로 바뀌면 모든 브라우저와 백엔드 서버는 사양을 준수하기 위해이를 처리하는 방법을 알고 있습니다.

그래서 질문을하면 C#의 쿠키를 처리하는 것입니다 ... 요청에서 헤더 정보를 읽는 것만으로 값을 디코딩하는 것을 기억해야합니다. + 문자가 포함 된 문자열.

+0

C#의 접근 방식을 처리하는 방법이 확실하지 않지만 API에서 SignIn 메서드를 실행할 때 저장된 쿠키는 URL 인코딩이되어 있지 않으며 지금까지는 URL로 인코딩 된 쿠키로 시도한 모든 승인 시도가 실패했습니다. PHP에서 여기에 +를 사용하여 원시 쿠키를 생성하는 방법이 있어야합니다. – Zerkeras

+0

그냥'echo setrawcookie ('authtoken', '1DEbKeyynVTbXeRJ2i5j2 + UgwgmuD17VgQ')'를 사용하면 나를 위해 true를 반환합니다 - 추가 매개 변수를 사용하지 않고 시도한 적이 있습니까? 또한'secure' 플래그를 설정하고, HTTPS를 통해 만들어진 모든 요청을 따르고 있습니까? –