Social Reiot

Social Game Developer wandering in strange dungeon.

Safari Cross Domain Cookie Solution

페이스북 Canvas IFrame 에서 OAuth 2.0 옵션을 켤 경우, 페이스북은 GET 으로 signed_request 를 보낸다.

  • 쿠키에 signed_request 가 없는데 GET 에 있으면 최초 접속으로 간주. (보통 다른 브라우저는 보내주니까) 2번 뷰로 redirect 시킨다. 아예 둘 다 없으면 잘못된 접근이다.
  • [request_cookie] 이 페이지의 HTML 에 form 을 만들고 body.onload 에서 form.submit() POST로 호출. 이때 첫 페이지에 따라온 signed_request 를 함께 보내야 한다.
  • [request_cookie] 지정된 원래 페이지로 다시 redirect 할 것. 이제부터 쿠키가 만들어져야 한다.

이때 P3P 헤더를 맨 앞에 지정할 것. 가급적 django middleware 를 이용. 즉 1개의 뷰에서 GET/POST 핸들링을 추가하는 것만으로 해결할 수 있다.

response[P3P] = CP=NOI DSP COR NID ADMa OPTa OUR NOR

see also http://chitika.com/bytes/2010/04/cross-domain-cookies-in-safari/

Comments