J'essaie de faire une demande CORS POST de domain.com à a.domain.com.
Mon javascript ressemble à ceci
$('#fileupload').fileupload({
xhrFields: {
withCredentials: true
},
dataType: 'json',
url: $('#fileupload').data('path'),
singleFileUploads: true,
add: function(e, data){
data.submit();
}
});
Au début, je vois la route OPTIONS appelée comme suit:
Request URL: https://a.domain.com/some/route
Request Method:OPTIONS
Status Code:200 OK
DEMANDE D'OPTIONS:
Access-Control-Request-Headers:Origin, content-type, accept
Access-Control-Request-Method:POST
Host:a.domain.com
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home
RÉPONSE AUX OPTIONS
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST
Access-Control-Allow-Origin:http://domain.com:3000
Connection:keep-alive
Content-Length:0
Content-Type:text/html;charset=utf-8
Cette demande revient avec un 200 comme indiqué. Sur mon serveur, j’ai le même itinéraire avec la méthode POST
et c’est ce que j’obtiens en retour après le OPTIONS
Request URL:https://a.domain.com/some/route
DEMANDE DE POST
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home
et la demande POST
est annulée/échoue.
Ma question est la suivante: dois-je également avoir le contrôle d'accès-autoriser-origine sur le contrôleur POST)?
J'ai un cookie pour l'autorisation qui a le domaine .domain.com
ce cookie a été envoyé une fois dans une demande et il n’est pas envoyé pour le moment. Une idée de pourquoi ça arriverait?
Oui, vous devez avoir l'en-tête Access-Control-Allow-Origin: http://domain.com:3000
ou Access-Control-Allow-Origin: *
à la fois dans la réponse OPTIONS et dans la réponse POST. Vous devez inclure l'en-tête Access-Control-Allow-Credentials: true
sur la réponse POST également).
Votre réponse à OPTIONS doit également inclure l’en-tête Access-Control-Allow-Headers: Origin, content-type, accept
pour correspondre à l'en-tête demandé.