LoginSignup
8
4

More than 5 years have passed since last update.

Safariだと3rd party cookieの制約(ITP)で、別ドメインへのAJAXコールでCookieが付与されないお話

Last updated at Posted at 2018-05-08

概要

Javascriptで別ドメインへのAJAXコールを行う処理を実装していたところ、ChromeやFireFoxでは問題なく動作したが、SafariではCookieが送信されていないことに気づいたというお話(その際特にエラーも出ず、ただ単にCookieが送信されない)。

原因

safariのITS対応 なるものがあったらしく、
Safari11.0からはデフォルトで3rd party cookie(別ドメインに対し付与されるCookie)は禁止されるようです。
ひでぇ…あんまりだ…

(Chrome等別のブラウザでも、3rd party cookieは広告での利用が多くユーザへの利便性がないため禁止する方向に向かっているようで、例えばChromeでは設定を変更すれば禁止できるようです。今後は原則考慮に入れる必要がありそうです。)

参考: Safariの新機能ITPと広告、Cookieについてのおさらい

構成

※ ドメイン等一部の値は仮の値を入れています

HTMLを返すWebサーバと、AJAXコールで呼び出す用のAPIサーバが別サーバになっており、ドメインも完全に別のものになっていた
* HTMLを返すWebサーバの中身はWordpress (ドメイン:www.service.com)
* APIサーバはHerokuでNodeJsのExpress (ドメイン:api.heroku.app)

つまりwww.service.comから取得したJavascript上で、api.heroku.appへリクエストを送信する。

対策

最終的にはAPIサーバのドメインを、api.service.com にすることで回避しました。
(挙動的を見る限りは、レジストラから取得したドメインservice.comのサブドメイン同士であれば、1st party cookieとして扱われるっぽいです)

8
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4