arp*_*shi 10 javascript cookies http-post httprequest http-headers
我试图通过javascript向服务器(这是一个REST服务)发出POST请求,并在我的请求中我想发送一个cookie.我的下面的代码无法正常工作,因为我无法在服务器上接收cookie side.Below是我的客户端和服务器端代码.
客户端 :
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);
Run Code Online (Sandbox Code Playgroud)
服务器端:
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
}
Run Code Online (Sandbox Code Playgroud)
请参阅文档:
如果标头与以下标头之一不区分大小写,请终止这些步骤……
Cookie
您不能使用XHR显式设置Cookie标头。
看起来您正在发出跨源请求(您正在使用绝对URI)。
您可以设置withCredentials为包含cookie。
当用户凭证要包含在跨域请求中时为true。当在跨域请求中将它们排除在外时,以及在响应中忽略cookie时,为False。最初是错误的。
这样:
client.withCredentials = true;
Run Code Online (Sandbox Code Playgroud)
仅当http://localhost:8080使用一种受支持的方法(例如,在HTTP Set-Cookie 响应标头中)设置cookie时,此方法才有效。
否则,您将不得不对要放入Cookie的数据进行编码。
这也可以通过更现代的方式来完成fetch
fetch(url, {
method: 'POST',
credentials: 'include'
//other options
}).then(response => console.log("Response status: ", response.status));
Run Code Online (Sandbox Code Playgroud)