Ajax(XHR) 호출의 서버 측 처리 중에 쿠키를 안정적으로 설정하거나 삭제할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/89579

문제

나는 이것에 대해 직접 약간의 테스트를 수행했으며(정확히 말하면 DWR Framework Ajax 요청 핸들러의 서버 측 처리 동안) 쿠키를 성공적으로 조작할 수 있는 것처럼 보이지만 이는 Ajax 모범 사례에서 읽은 많은 내용과 반대됩니다. 브라우저가 XmlHttpRequest의 응답을 해석하는 방법.참고: 내가 테스트한 내용은 다음과 같습니다.

  • IE 6 및 7
  • 파이어폭스 2 및 3
  • 원정 여행

그리고 모든 경우에 Ajax 요청 처리 중 HttpServletResponse 객체에 대한 표준 쿠키 작업이 브라우저에 의해 올바르게 해석되었지만 쿠키 조작을 클라이언트 측으로 푸시하는 것이 가장 좋은 방법인지, 아니면 이(훨씬 더 깨끗한) 서버인지 알고 싶습니다. 사이드 쿠키 처리를 신뢰할 수 있습니다.

DWR Framework와 Ajax 전반에 관련된 답변을 환영합니다.

도움이 되었습니까?

해결책

XMLHttpRequest는 항상 웹 브라우저의 연결 프레임워크를 사용합니다.XHR 개체에 브라우저의 쿠키 풀에 대한 액세스 권한이 없으면 사용자가 로그아웃되므로 AJAX 프로그램이 올바르게 작동하기 위한 요구 사항입니다.

이론적으로는 브라우저의 연결 프레임워크를 사용하지 않고 웹 브라우저가 단순히 세션 쿠키를 공유하는 것이 가능하지만 실제로는 (내가 아는 한) 이런 일이 발생하지 않았습니다.Flash 플러그인도 웹 브라우저의 연결을 사용합니다.

따라서 최종 결과는 AJAX를 통해 쿠키를 조작하는 것이 안전하다는 것입니다.단지 명심해라 AJAX 호출이 절대 발생하지 않을 수도 있습니다.보장된 이벤트는 아니므로 기대하지 마세요.

다른 팁

DWR의 맥락에서는 "안전"하지 않을 수 있습니다.

독서에서 DWR 사이트 그것은 말한다:

HTTP 요청과 응답을 읽기 전용으로 처리하는 것이 중요합니다.HTTP 헤더는 정상적으로 통과할 수 있지만 일부 브라우저에서는 이를 무시할 가능성이 높습니다.

저는 이것을 쿠키나 요청 속성 설정이 절대 안 된다는 의미로 받아들였습니다.
즉, 요청 속성을 설정하는 코드(해당 페이지를 읽기 전에 작성한 코드)가 있고 제대로 작동하는 것 같습니다(위의 의견에서 언급한 쿠키 삭제는 제외).

클라이언트 측에서 쿠키를 조작하는 것은 "모범 사례"와는 정반대입니다.그리고 그럴 필요도 없습니다.HttpOnly 쿠키는 아무것도 도입되지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top