Axios がリクエストで自動的にクッキーを送信するようにする 質問する

Axios がリクエストで自動的にクッキーを送信するようにする 質問する

Axios を使用して、クライアントから Express.js サーバーにリクエストを送信しています。

クライアントに Cookie を設定し、手動でリクエストに追加せずに、すべての Axios リクエストからその Cookie を読み取りたいと考えています。

これはクライアント側のリクエストの例です:

axios.get(`some api url`).then(response => ...

Express.js サーバーで次のプロパティを使用してヘッダーまたは Cookie にアクセスしようとしました。

req.headers
req.cookies

どちらにも Cookie は含まれていません。Cookie パーサー ミドルウェアを使用しています:

app.use(cookieParser())

Axios がリクエストで Cookie を自動的に送信するようにするにはどうすればよいですか?

編集:

次のようにクライアントに Cookie を設定します。

import cookieClient from 'react-cookie'

...
let cookie = cookieClient.load('cookie-name')
if(cookie === undefined){
      axios.get('path/to/my/cookie/api').then(response => {
        if(response.status == 200){
          cookieClient.save('cookie-name', response.data, {path:'/'})
        }
      })
    }
...

Axios も使用していますが、質問とは関係ありません。Cookie が設定されると、すべてのリクエストに Cookie を埋め込むだけです。

ベストアンサー1

使用できますwithCredentials財産。

別のドメインからの XMLHttpRequest は、リクエストを行う前に withCredentials が true に設定されていない限り、自身のドメインの Cookie 値を設定できません。

axios.get(BASE_URL + '/todos', { withCredentials: true });

また、すべてのAxiosリクエストに資格情報を強制することも可能です。

axios.defaults.withCredentials = true

または、次のコードのように、Axiosリクエストの一部に資格情報を使用する

const instance = axios.create({
   withCredentials: true,
   baseURL: BASE_URL
})
instance.get('/todos')

おすすめ記事