我试图通过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);
服务器端:
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
}
如果header是以下标题之一的区分大小写匹配,请终止这些步骤...
Cookie
您无法使用XHR显式设置Cookie标头。
看起来你正在做一个跨源请求(你使用的是绝对URI)。
您可以将withCredentials
设置为包含Cookie。
当用户凭据包含在跨源请求中时为True。如果要在跨源请求中排除它们以及在响应中忽略cookie,则为false。最初是假的。
这样:
client.withCredentials = true;
这只有在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));