2016-01-01 12 views
87

新しいFetch APIを試していますが、Cookieに問題があります。具体的には、ログインに成功すると、将来のリクエストにCookieヘッダーがありますが、Fetchはそのヘッダーを無視してしまい、Fetchで行われたすべてのリクエストは許可されていません。Cookieを使用したAPIの取得

Fetchがまだ準備ができていないか、FetchがCookieで動作しないためですか?

Webpackでアプリケーションをビルドします。私は同じ問題がないFetch in React Nativeも使用します。

答えて

139

フェッチではデフォルトでクッキーは使用されません。クッキーを有効にするには、この操作を行います。Khanetorの答え@に加えて

fetch(url, { 
    credentials: "same-origin" 
}).then(...).catch(...); 
+15

同じ起源はもはや働かないので、含めてください(@ Jerryの答えを参照):https://developers.google.com/web/updates/2015/03/introduction-to-fetch – jpic

+0

acccess cookie –

+2

@jpic: 'インクルード'は、クロスオリジン要求に対してのみ機能しますが、同じオリジン要求に対しては機能しません。公式の文書:https://github.com/github/fetch#sending-cookies – HoldOffHunger

79

を、クロスオリジン・リクエストを処理している人のために:

fetch(url, { 
    method: 'GET', 
    credentials: 'include' 
}) 
    .then((response) => response.json()) 
    .then((json) => { 
    console.log('Gotcha'); 
    }).catch((err) => { 
    console.log(err); 
}); 

https://developer.mozilla.org/en-US/docs/Web/API/Request/credentialscredentials: 'include'

サンプルJSONリクエストをフェッチ

+3

どのようにしてクッキーを設定しますか? – pomo

+0

クッキーはサーバー側から設定されています。私の場合、私はhttponlyクッキーを使用していました。 – Khanetor

+2

@Khanetor javascriptでdocument.cookieを使用してCookieを設定してからリクエストを送信できますか? – ospider

関連する問題