Envoyer cookie dans la Requête HTTP POST en javascript
Je suis en train de faire une requête POST vers le serveur (Qui est un service REST)via javascript,et à ma demande, je veux envoyer un cookie.Mon code ci-dessous ne fonctionne pas ,comme je ne suis pas en mesure de recevoir les cookies sur le côté serveur.Ci-dessous sont de mon côté client et côté serveur code.
Côté Client :
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);
Côté Serveur:
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
}
setRequestHeader("Set-Cookie","session=abc");
— Set-Cookie est un réponse en-tête, pas un en-tête de requête.voir aussi ce fil stackoverflow.com/questions/2870371/...
OriginalL'auteur arpit joshi | 2016-03-01
Vous devez vous connecter pour publier un commentaire.
Voir la documentation:
Vous ne pouvez pas définir explicitement un Cookie-tête à l'aide XHR.
Il semble que vous faites une croix requête d'origine (vous utilisez un URI absolu).
Vous pouvez définir
withCredentials
à inclure des cookies.Tel:
Cela ne fonctionnera que si
http://localhost:8080
a mis un cookie en utilisant l'une des méthodes prises en charge (comme dans un HTTPSet-Cookie
réponse en-tête).À défaut, vous devrez encoder les données que vous avez voulu mettre dans le cookie ailleurs.
client.setRequestHeader("Set-Cookie","session=abc");
— Non, c'est un en-tête de réponse.client.withCredentials = true;
— Oui, si votre serveur va définir le cookie par l'intermédiaire d'un mécanisme acceptable (tels que la Set-Cookie-tête de réponse HTTP).Je suis à l'envoi de cookies au serveur .Mon serveur ne va pas régler tous les cookies.Il va juste recevoir .Donc pas de cookies sur le côté serveur ,il suffit de le recevoir à partir du javascript .Et le client (javascript) envoie une requête POST vers le serveur .Et le serveur n'est pas envoyer quoi que ce soit de nouveau au client .Juste un httpstatus 200
Ensuite, vous ne pouvez pas utiliser les cookies pour ce. Comme je l'ai dit, vous ne pouvez pas créer des cookies côté client sur un cross-origin demande XHR.
OriginalL'auteur Quentin
Cela peut aussi être fait avec la plus moderne
fetch
OriginalL'auteur PDStat