JavaScript
GAE
FetchAPI

同じドメインからのリクエストのはずなのにクロスドメイン制約でブロックされた話

More than 1 year has passed since last update.

結構アホくさい感じですが, 小時間ハマったので.

前提

GAE でちょっとしたビューアー作成中に, FetchAPI を使って同ドメインの GAE サーバーからデータを引っ張ろうと API リクエストを送りました.

fetch('/api/get_user_data', {
    method: 'GET',
}).then((response) => {
    // Do HogeHoge
});

結果,
クロスオリジン要求をブロックしました ~~ (By FireFox の開発コンソール)
と出ました.
ドメインは同じはずなのになんでかなーと GCP ロギングを見ると,
302 /api/get_user_data
とリダイレクトされていました.
さらにリダイレクトしている部分を見ると,
https://www.google.com/accounts/ServiceLogin?service=ah&passive=
経由となっています.
なるほど確かに app.yaml で /api 下は login: required 設定なのでログインしているか確認しているのはうなずけます. ただ, API リクエストはログイン後なんだけどなあ, と迷っていたら...

Cookie送ってないなこれは

ということで

fetch('/api/get_user_data', {
    method: 'GET',
    credentials: "same-origin",
}).then((response) => {
    // Do HogeHoge
});

と直して通るようになりました.