私は新しいFetch APIを試していますが、Cookieに問題があります。具体的には、ログインが成功した後の将来のリクエストにはCookieヘッダーがありますが、Fetchはそのヘッダーを無視するようで、Fetchを使って行われたすべてのリクエストは承認されていません。
Fetchがまだ準備ができていないか、FetchがCookieで機能しないためですか。
私はWebpackを使って自分のアプリをビルドします。私はReact NativeでFetchを使っていますが、同じ問題はありません。
デフォルトではFetchはcookieを使用しません。クッキーを有効にするためには、これをして下さい:
fetch(url, {
credentials: "same-Origin"
}).then(...).catch(...);
@ Khanetorの回答に加えて、クロスオリジンのリクエストを扱っている人のために:credentials: 'include'
JSONフェッチ要求のサンプル:
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/credentials
解決しました。 2つだけf。 brutforceの日々
私にとっての秘密は次のとおりです。
私はPOST/api/authに電話したところ、クッキーがうまく受け取られたことがわかりました。
それから、GET/api/users /をcredentials: 'include'
付きで呼び出すと401リクエストが不正確になりました。リクエストにクッキーが送信されなかったためです。
重要なのは、最初の/ api/auth呼び出しにもcredentials: 'include'
を設定することです。
2019年にこれを読んでいるのであれば、credentials: "same-Origin"
がデフォルト値です。
fetch(url).then
.net
webapi2
ユーザーの正しい答えをここに追加するだけです。
クライアントサイトがcors
とは異なるアドレスから提供されているためwebapi
を使用している場合は、サーバー側の構成にSupportsCredentials=true
も含める必要があります。
// Access-Control-Allow-Origin
// https://docs.Microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-Origin-requests-in-web-api
var cors = new EnableCorsAttribute(Settings.CORSSites,"*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);