2016-06-06 3 views
2

ROR4에서 request.cookiescookies 개체 사이에 차이가 있습니까?컨트롤러의 request.cookies와 쿠키의 차이점은 무엇입니까?

현재 node.js 서버에서 내 ROR4 응용 프로그램으로 쿠키와 함께 요청을 보내려고합니다. ROR 응용 프로그램에서 request.cookies에는 내가 보내고있는 쿠키가 들어 있지만 cookies 개체 (기존 논리를 기반으로 함)에는 없습니다.

문서를 검색했지만 관련 항목을 찾을 수 없습니다. 제가 놓친 뭔가가 있습니까? 어떤 도움을 주셔서 감사합니다.

+1

나는 똑같은 문제에 직면했다. 차이점의 이유를 알아 냈습니까? – LOCKLOCK

답변

4

request.cookiesRack provided입니다. 이것은 쿠키 헤더를 구문 분석하여 얻은 키 값 쌍의 해시 일뿐입니다.

컨트롤러 cookies 메서드는 request.cookie_jar을 반환합니다. 쿠키 항아리는 똑같은 request.cookies 데이터로 만들어 지지만 서명 된 쿠키, 데이터를 쿠키로 직렬화하는 것과 같은 일련의 레일 기능을 추가합니다.

키가 필요한 이유는 없습니다. 하나는 있지만 다른 하나는 존재하지 않는다.

1

이상적으로는 request.cookiescookies이 동일해야합니다. 그러나 POST (동작 만들기) 요청에서 레일은 XSRF 토큰을 확인합니다. 확인에 실패하면 request.cookies의 쿠키는 request.cookie_jar에서 사용할 수 없습니다. 즉, cookies 방법으로는 사용할 수 없습니다.

XSRF 토큰이 누락되어 쿠키가 일치하지 않는지 확인합니다. 요청할 때 쿠키 해시 클래스를 확인하십시오. cookies.hashActionDispatch::Cookies::CookieJar을 반환합니다. 대신 ActionController::RequestForgeryProtection::ProtectionMethods::NullSession::NullCookieJar을 반환하면 XSRF 토큰이 일치하지 않습니다.

이 시나리오는 기본적으로 XSRF 토큰을 선택하지 않고 요청과 함께 보내는 javascript를 통해 이러한 호출을 할 때 발생합니다. 문제를 해결하는 방법은 여기에서 답변 : https://stackoverflow.com/a/8175979/976880을 참조하십시오.

관련 문제