私はPOSTサーバーへのリクエスト(これはRESTサービスです)をjavascript経由で行います。サーバー側でCookieを受信できないため、以下のコードは機能しません。以下は、クライアント側とサーバー側のコードです。
クライアント側:
var client = new XMLHttpRequest();
var request_data=JSON.stringify(data);
var endPoint="http://localhost:8080/pcap";
var cookie="session=abc";
client.open("POST", endPoint, false);//This Post will become put
client.setRequestHeader("Accept", "application/json");
client.setRequestHeader("Content-Type","application/json");
client.setRequestHeader("Set-Cookie","session=abc");
client.setRequestHeader("Cookie",cookie);
client.send(request_data);
サーバー側:
public @ResponseBody ResponseEntity getPcap(HttpServletRequest request,@RequestBody PcapParameters pcap_params ){
Cookie cookies[]=request.getCookies();//Its coming as NULL
String cook=request.getHeader("Cookie");//Its coming as NULL
}
ドキュメント を参照してください:
ヘッダーが次のヘッダーのいずれかで大文字と小文字を区別しない場合は、これらの手順を終了します…
Cookie
XHRを使用してCookieヘッダーを明示的に設定することはできません。
Origin間リクエストを作成しているようです(絶対URIを使用しています)。
withCredentials
を設定して、Cookieを含めることができます。
ユーザー資格情報がクロスオリジンリクエストに含まれる場合はtrue。クロスオリジンリクエストで除外される場合、およびレスポンスでCookieが無視される場合はfalse。最初は偽。
そのような:
client.withCredentials = true;
これは、http://localhost:8080
は、サポートされているメソッド(HTTP Set-Cookie
responseヘッダー)。
それに失敗すると、クッキーに入れたいデータをどこかにエンコードする必要があります。
これは、最新のfetch
でも実行できます。
fetch(url, {
method: 'POST',
credentials: 'include'
//other options
}).then(response => console.log("Response status: ", response.status));