2008-09-18 12 views
7

나는 (DWR 프레임 워크 Ajax 요청 처리기를 정확하게 처리하는 동안 서버 쪽에서) 약간의 테스트를 수행했으며 쿠키를 성공적으로 조작 할 수있는 것 같지만 이것이 Ajax에 대해 많이 읽었던 것에 반하는 내용이다. 관행 및 브라우저가 XmlHttpRequest의 응답을 해석하는 방법에 대해 설명합니다.Ajax (XHR) 호출의 서버 측 처리 중에 쿠키를 안정적으로 설정하거나 삭제할 수 있습니까?

  • IE 6, 7
  • 파이어 폭스 2와 3
  • 사파리

와 Ajax 요청을 처리하는 동안 HttpServletResponse를 개체의 표준 쿠키 작업이 제대로 있던 모든 경우에을 : 나는 테스트 한 참고 브라우저에 의해 해석되지만 쿠키 조작을 클라이언트 측으로 푸시하는 것이 가장 좋은 방법인지 또는이 (훨씬 깔끔한) 서버 측 쿠키 처리를 신뢰할 수 있는지 알고 싶습니다.

일반적으로 DWR 프레임 워크 및 Ajax와 관련된 답변을 환영합니다.

+0

서버 측 DWR 요청에서 쿠키를 삭제하는 데 문제가있어 궁금했습니다. 잘 만들 수는 있지만 삭제할 수는 없습니다. 쿠키를 사용할 수 없다고 가정하고 나서 쿠키가없는 해결책을 찾아 냈습니다. –

답변

8

XMLHttpRequest는 항상 웹 브라우저의 연결 프레임 워크를 사용합니다. XHR 객체가 브라우저의 쿠키 풀에 액세스하지 못하면 사용자가 로그 아웃 할 때 AJAX 프로그램이 올바르게 작동해야합니다.

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

따라서 최종 결과는 AJAX를 통해 쿠키를 조작하는 것이 안전하다는 것입니다. 에 AJAX 호출이 결코 일어나지 않을 수도 있다는 것을 명심하십시오. 그것들은 보장 된 사건이 ​​아니므로 그것들에 의지하지 마십시오.

+0

의견이 약간 씩 다르긴하지만, 서버 측에서 비즈니스 로직을 중앙 집중화하는 것에 대한 내 자신의 테스트 결과, 득표 및 일반적인 베스트 프랙티스를 감안할 때 이것이 가장 의미가 있습니다. – Peter

+0

내 기쁨. Flash 및 Javascript 용 다중 게임 API를 만드는 동안이 분야에 대한 연구도 많이 수행했습니다. HTTP RFC에 의해 부과 된 2 개의 연결 제한으로 인해 브라우저의 연결을 사용하고 있다는 것이 빠르게 나타났습니다. 쿠키가이 정보를 확인했습니다. – 64BitBob

-1

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

+0

그는 클라이언트에서 쿠키를 조작하지 않습니다. 그는 Ajax 요청에 대한 응답으로 서버에서이를 조작하고 있습니다. 어쨌든 클라이언트 측 쿠키 조작은 JS가 비활성화되거나 지원되지 않을 때 정상적으로 저하되는 한 일반적으로 유해한 것으로 간주되지 않습니다. –

1

DWR과 관련하여 "안전하지 않을 수 있습니다".

the DWR site를 읽고 그것이 말하는 사람 :

당신이 HTTP 요청 및 읽기 전용으로 응답을 치료하는 것이 중요합니다. HTTP 헤더가 정상적으로 처리 될 수는 있지만 일부 브라우저에서는 무시할 수 있습니다.

나는 쿠키 또는 요청 속성을 설정하는 것이 아니오 (no-no)라는 것을 의미합니다.
요청 속성 (코드를 작성하기 전에 코드를 작성하기 전에 작성한 코드)이 있으며 위의 내용에서 언급 한 쿠키를 삭제하는 것 외에는 잘 작동하는 것으로 보입니다.