2017-10-02 16 views
4

최근 Safari 11이 Mac OSX에서 출시되었습니다. 이 업데이트로 인해 reuest 헤더의 XSRF와 함께 웹 응용 프로그램에 문제가 발생합니다. 논리적 인 방법으로 문제를 설명하려고 노력할 것입니다.Safari 11 새로 고침 후 X-XSRF-TOKEN이 업데이트되지 않습니다.

사용자가 로그인하고 싶어
  1. , 그는이 XSRF 토큰의 값을 포함하는 설정 쿠키와 서버의 응답을 수신 : 이 좋은 상황이 같을 것이다 방법이다. Eg: Set-Cookie: XSRF-TOKEN=LKNBX4DZhL708KjXNkgXnlxTDCNuhsZG1kTc2SFy498; Path=/; Secure

  2. 페이지 새로 고침 실행될 다음 호출에는 헤더의 올바른 XSRF 값이 포함됩니다. 서버 측에서 값이 확인됩니다. 프런트 엔드로부터의 각 호출에는 해당 XSRF 토큰이 포함됩니다.

  3. 사용자가 로그 아웃했다가 다시 로그인하려는 경우 XSRF 쿠키가 새 값으로 덮어 쓰여지고 해당 토큰으로 로그인 할 수 있습니다. (맥 OSX에 사파리 (11)와, 다른 브라우저는이 동작을 표시하지 않습니다)

우리의 문제 상황 : 기존의 어떤 쿠키가없는 경우

  1. , 사용자는 정상적인

  2. 로그인 할 수 있습니다
  3. 그러나 이전 세션 이후에 다시 로그인하려는 경우 새로 고침이 수행됩니다. 첫 번째 호출에서 다른 호출과 다른 호출에서 XSRF 토큰 새로 고침은 새 값으로 대체되지 않고 이전 세션의 이전 XSRF 토큰을 여전히 포함합니다. 이 요청을 검사 할 때이 요청의 쿠키에 올바른 값이 포함되어 있지만 헤더에 이전 토큰이 반영되어 있음을 알 수 있습니다.

  4. 잘못된 헤더로 호출하면 백엔드에서 세션이 닫히고 사용자가 세션에서 퇴장 당합니다. TLDR; Safari 11에서 XSRF-TOKEN 헤더는 새로 고침 후 쿠키 값에 따라 업데이트되지 않습니다. 이전 버전과 Safar 11 버그라고 생각되는 다른 브라우저에서이 작업을 수행했습니다.

비슷한 종류의 문제가 발생한 사람이 있습니까? Safari 11에서 페이지를 새로 고친 후 요청의 헤더 값이 업데이트되지 않는 위치는 어디입니까?

EDIT : 테스트 후 URL에 타임 스탬프를 넣으면 쿼리 매개 변수로 Safari 11이 올바른 요청을 보내 게됩니다. 일부 요청은 캐시되고 업데이트 된 헤더는 무시되는 것으로 보입니다.

고마워요!

답변

0

토큰 문제에 대해서는 언급 할 수 없지만 Safari 11에 캐싱 문제가 있다는 의혹이 있습니다. 최근에도 JSON 요청을

Cache-Control: no-cache, private 

사파리는 로컬 호스트에서 페이지의 2 개를 다시로드 한 후 (Cache (Disk)로 표시) 이러한 요청을 캐시하기 시작 지정하는 것이. 파이어 폭스도 크롬도 어떤 것도하지 않습니다. 나 한테 버그가 된 것 같은데?

+1

사실 내 문제와 매우 유사합니다. 우리는 사파리 11 (이전 버전과 다른 브라우저가 괜찮습니다)에서만이 사실을 알았습니다. 또한 캐시 제어를 지정했지만 동작에 영향을주지 않았습니다. 마찬가지로 나는 새로운 쿼리 매개 변수 (고유 한 요청을하기 위해 datestamp)를 추가했다.다행히도 이것은 당신을 도울 수 있습니다. – Flex

+1

아마도이 버그일까요? https://bugs.webkit.org/show_bug.cgi?id=170714 – bouke