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')