Ich versuche, eine domänenübergreifende HTTP-Anfrage an den WCF-Dienst (den ich besitze) zu senden. Ich habe verschiedene Techniken zum Arbeiten mit den Einschränkungen für domänenübergreifende Skripte gelesen. Da mein Dienst sowohl GET- als auch POST-Anforderungen berücksichtigen muss, kann ich kein dynamisches Skript-Tag implementieren, dessen src die URL einer GET-Anforderung ist. Da ich Änderungen am Server vornehmen kann, habe ich begonnen, eine Problemumgehung zu implementieren, bei der die Serverantworten so konfiguriert werden, dass sie den Header "Access-Control-Allow-Origin" und Preflight-Anforderungen mit und OPTIONS-Anforderungen enthalten. Ich habe die Idee aus diesem Beitrag: CORS zum Laufen bringen
Auf der Serverseite fügt meine Webmethode der HTTP-Antwort 'Access-Control-Allow-Origin: *' hinzu. Ich kann sehen, dass die Antworten jetzt diesen Header enthalten. Meine Frage lautet: Wie 'preflight' ich eine Anfrage (OPTIONEN)? Ich verwende jQuery.getJSON, um die GET-Anfrage zu stellen, aber der Browser storniert die Anfrage sofort mit dem berüchtigten:
Origin http: // localhost ist von Access-Control-Allow-Origin nicht zulässig
Ist jemand mit dieser CORS-Technik vertraut? Welche Änderungen müssen beim Kunden vorgenommen werden, um meine Anfrage vorab zu bearbeiten?
Vielen Dank!
quelle
Access-Control-Allow-Origin: *
//cors and preflight filtering app.all('*', function(req, res, next){.. //preflight needs to return exact request-header res.set('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); if ('OPTIONS' == req.method) return res.send(204);next(); });
Obwohl dieser Thread aus dem Jahr 2014 stammt, kann das Problem für viele von uns immer noch aktuell sein. So habe ich in einem jQuery 1.12 / PHP 5.6-Kontext damit umgegangen:
PHP-Codebeispiel:
Fügen Sie insbesondere kein hinzu,
exit;
da kein Preflight erforderlich ist.quelle