2017-07-21 2 views
0

Je dois envoyer une requête d'extraction (en utilisant le script java), et quand je l'envoie de localhost: 8080 c'est bien, mais quand je change localhost à autre - il y a réponse 303 ou pas de réponse à tout.CORS chercher pour différents ports

De plus, il inclut des cookies lorsque je l'envoie à partir de 8080, et PAS d'envoi d'un autre hôte.

Où pourrait être le problème? Je suis totalement perdu.

+2

Comment pourrions-nous savoir quel est le problème sans voir votre code? – Daniel

Répondre

1

MDN got quite good doc on CORS and fetch. Donc, lorsque vous appelez chercher une autre origine avec un drapeau CORS:

fetch(url, {method: 'GET', mode: 'cors'}) 

si l'URL est d'origine différente de celle du site fetch première question demande d'option avec les en-têtes:

Origin: http://foo.example 
Access-Control-Request-Method: GET 

Server doit confirmer cette origine est autorisée pour ces demandes réponse envoi:

Access-Control-Allow-Origin: http://foo.example 
Access-Control-Allow-Methods: GET 

côté serveur Très probablement ne pas CORS activé, cela peut être facilement vérifié par le réseau de la console navigateur re quêtes Vérifiez que OPTIONS est envoyé et répondu par le côté serveur, également que votre site est présent dans Access-Control-Allow-Origin: en-tête communiqué de retour.

S'il vous plaît noter, si votre serveur requiert une autorisation que vous devez appeler chercher avec {credentials: 'include'}:

fetch(url, {method: 'GET', mode: 'cors', credentials: 'include'}) 
+0

"Le côté serveur le plus probable n'a pas activé CORS" - Cela n'explique pas les résultats décrits par l'OP. – Quentin

+0

Pourquoi pas, cela dépend de l'implémentation du serveur. "n'a pas de CORS activé" signifie que CORS n'est pas activé pour l'origine à partir de laquelle il envoie. –

+0

je me attends « Méthode non autorisée » ou une réponse normale (ce qui est inaccessible à JS) si CORS n'a pas été mis en place. Je ne m'attendrais à aucune réponse ou à une redirection 303. – Quentin