Ich versuche, eine einfache Cross-Origin-Anfrage zu stellen, und Firefox blockiert sie konsequent mit diesem Fehler:
Ursprungsübergreifende Anforderung blockiert: Die gleiche Ursprungsrichtlinie verbietet das Lesen der Remote-Ressource unter [url]. Dies kann behoben werden, indem die Ressource in dieselbe Domäne verschoben oder CORS aktiviert wird. [url]
Es funktioniert gut in Chrome und Safari.
Soweit ich das beurteilen kann, habe ich auf meinem PHP alle richtigen Header gesetzt, damit dies funktioniert. Hier ist, womit mein Server antwortet
HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html
Ich habe versucht, Angular, jQuery und ein grundlegendes XMLHTTPRequest-Objekt wie folgt zu verwenden:
var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()
... und es funktioniert in jedem Browser außer Firefox. Kann mir jemand dabei helfen?
javascript
firefox
cors
cross-domain
Godwhacker
quelle
quelle
mozSystem
wird nicht für normale Websites unterstützt, sondern nur für gepackte Firefox-OS- Apps. Löschen Sie diese Option.Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length 35
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host [url]
Origin [url]
Referer [referrer url]
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0
Fehler:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at [url]. This can be fixed by moving the resource to the same domain or enabling CORS. [url]
Antworten:
Es stellte sich heraus, dass dies nichts mit CORS zu tun hat - es war ein Problem mit dem Sicherheitszertifikat. Irreführende Fehler = 4 Stunden Kopfschmerzen.
quelle
withCredentials=true
die XHR-Instanz festzulegen. Andernfalls konnte Firefox das Client-Zertifikat bei der Anforderung nicht verwenden (funktionierte jedoch in Chrome einwandfrei).Ich stellte fest, dass mein Problem darin bestand, dass der Server, an den ich die Cross-Anfrage gesendet habe, ein nicht vertrauenswürdiges Zertifikat hatte.
Wenn Sie eine Verbindung zu einer domänenübergreifenden Verbindung herstellen möchten
https
, müssen Sie zuerst eine Ausnahme für dieses Zertifikat hinzufügen.Sie können dies tun, indem Sie den blockierten Link einmal besuchen und die Ausnahme hinzufügen.
quelle
Ich bin auf diese Frage gestoßen, nachdem festgestellt wurde, dass Anfragen in Firefox mit der folgenden Nachricht blockiert wurden:
Nachdem ich mir die Haare ausgezogen hatte, stellte ich fest, dass eine neu installierte Firefox-Erweiterung, Privacy Badger, die Anfragen blockierte.
Wenn Sie nach einem Kopfkratzer zu dieser Frage kommen, überprüfen Sie, welche Erweiterungen Sie installiert haben, um festzustellen, ob eine von ihnen Anforderungen blockiert.
Weitere Informationen finden Sie unter Grund: Die CORS-Anforderung war auf MDN nicht erfolgreich .
quelle
Ich habe nach 2 Tagen eine Lösung gefunden :(.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials
quelle
Wenn Sie kein "echtes" Zertifikat haben (und daher ein selbstsigniertes Zertifikat verwenden), können Sie in FireFox Folgendes aufrufen:
Geben Sie dort den Speicherort ein, z. B.: Https: //wwww.myserver: myport
quelle
Nur ein Wort der Warnungen. Ich habe das Problem mit Firefox und CORS endlich umgangen.
Die Lösung für mich war dieser Beitrag
Festlegen von CORS (Cross-Origin Resource Sharing) in Apache mit korrekten Antwortheadern, die alles durch | ermöglichen Benjamin Horn
Firefox verhielt sich jedoch sehr, sehr seltsam, nachdem diese Header auf dem Apache-Server (im Ordner .htaccess) festgelegt wurden.
Ich fügte eine Menge
console.log("Hi FF, you are here A")
usw. hinzu, um zu sehen, was los war.Zuerst sah es so aus, als würde es hängen bleiben
xhr.send()
. Aber dann stellte ich fest, dass es nicht zu dieser Aussage kam. Ich stellte einen anderenconsole.log
direkt davor und kam nicht dorthin - obwohl zwischen dem letztenconsole.log
und dem neuen nichts war . Es hörte einfach zwischen zwei aufconsole.log
.Zeilen neu anordnen, löschen, um festzustellen, ob die Datei ein seltsames Zeichen enthält. Ich habe nichts gefunden
Durch einen Neustart von Firefox wurde das Problem behoben.
Ja, ich sollte einen Fehler melden. Es ist nur so seltsam, dass ich nicht weiß, wie ich es reproduzieren soll.
HINWEIS : Und oh, ich habe nur die
Header always set
Teile gemacht, nicht denRewrite*
Teil!quelle
Einfach hinzufügen
zu der
.htaccess
Datei im Stammverzeichnis der Website, mit der Sie eine Verbindung herstellen möchten.quelle
Überprüfen Sie für die Nachwelt auch die Serverprotokolle, um festzustellen, ob die angeforderte Ressource 200 zurückgibt.
Ich stieß auf ein ähnliches Problem, bei dem alle richtigen Header in der Ajax-Anfrage vor dem Flug zurückgegeben wurden, aber der Browser meldete, dass die eigentliche Anfrage aufgrund fehlerhafter CORS-Header blockiert war.
Es stellte sich heraus, dass die angeforderte Seite aufgrund eines fehlerhaften Codes einen 500-Fehler zurückgab, jedoch nur, wenn sie über CORS abgerufen wurde. Der Browser (sowohl Chrome als auch Firefox) hat fälschlicherweise gemeldet, dass der Header "Access-Control-Allow-Origin" fehlte, anstatt zu sagen, dass die Seite 500 zurückgegeben hat.
quelle
Versuchen Sie dies, es sollte Ihr Problem lösen
Fügen Sie in Ihrer config.php www pre in Ihre domain.com ein. Beispielsweise:
Fügen Sie dies Ihrer .htaccess-Datei hinzu
quelle
Es stellte sich für mich heraus, dass ich den
Access-Control-Allow-Origin
Antwortheader auf einen bestimmten (und den richtigen)host.com
Wert gesetzt habe, dieser aberhttp://host.com
stattdessen zurückgegeben werden musste. Was macht Firefox? Die GET-Anforderung wird stillschweigend verschluckt und der XHR wird der Status 0 zurückgegeben, ohne dass Warnungen an die Javascript-Konsole ausgegeben werden, während bei anderen ähnlichen Fehlern zumindest etwas gesagt wird. Ai ai.quelle
Überprüfen Sie zum Debuggen nach Möglichkeit die Serverprotokolle. Firefox gibt aus einer Reihe von Gründen CORS-Fehler in der Konsole zurück.
Einer der Gründe ist auch das Plugin uMatrix (und ich denke auch NoScript und ähnliches).
quelle
Ich hatte ein ähnliches Problem und denke, dass es gültig ist, registriert zu werden, wie ich es behoben habe:
Ich habe ein System, das im Wesentlichen über Symfony 3 aufgebaut ist. Aus Gründen des Selbstlernens und der Leistung habe ich beschlossen, einige Skripte mit GoLang zu schreiben, auch mit einer API mit öffentlichem Zugriff.
Meine Go-API erwartet Parameter im Json-Format und gibt auch die Antwort im Json-Format zurück
Um diese GoApis zu nennen, verwende ich meistens $ .ajax (jQuery). Der erste Test war eine Täuschung: das (un) berühmte Popup "Cross-Origin Request Blocked"! Dann habe ich versucht, die "Access-Control-Allow-Origin: *" auf Apache Conf, Htaccess, PHP, Javascript und überall dort zu setzen, was ich auf Google finden konnte!
Aber auch der gleiche frustrierende Fehler !!!
Die Lösung war einfach: Ich musste "POST" -Anfragen anstelle von "GET" stellen.
Um dies zu erreichen, musste ich sowohl GoLang als auch JavaScript anpassen, um GET! Sobald dies erledigt ist, wird keine Cross-Origin-Anfrage mehr für mich blockiert !!!
Ich hoffe es hilft
PS:
Ich verwende Apache und Vhost im Verzeichnisblock, den ich habe
Denken Sie daran: "*" bedeutet, dass Sie Anfragen von jedermann annehmen !!! (Was möglicherweise ein Sicherheitsmangel ist) In meinem Fall ist es in Ordnung, da es sich um eine öffentliche API handelt
PS2: Meine Header
Antwortheader
Anforderungsheader (469 B)
quelle
Wenn die oben genannten Antworten nicht helfen, prüfen Sie, ob der Back-End-Server betriebsbereit ist oder nicht, da in meinem Fall der Server abgestürzt ist und sich dieser Fehler als völlig irreführend herausstellt.
quelle
In meinem Fall war es mein ADBLOCKER ! Aus irgendeinem Grund wurde es auf meinem lokalen Host aktiviert und verursachte diesen Fehler in Firefox.
Das Deaktivieren oder Deinstallieren des Plugins sollte dies beheben.
In Ihrem Fall handelt es sich möglicherweise nicht um einen Adblocker, sondern um ein anderes Firefox-Plugin. Testen Sie es zunächst inkognito ohne Plugins, um festzustellen, ob dies das Problem ist, und deaktivieren Sie die Plugins dann systematisch, bis Sie den Schuldigen gefunden haben.
quelle
Die Dateien sind selbsterklärend. Machen Sie eine Datei, nennen Sie es etwas. In meinem Fall jq2.php.
Jetzt werden wir eine Engine einbinden, eine Datei erstellen und sie so nennen, wie Sie möchten. In meinem Fall ist es gs.php.
Ich habe versucht, das Beispiel so einfach wie möglich zu halten. Und da der Link bei jedem Tastendruck ausgeführt wird, wird das Kontingent Ihrer API ziemlich schnell verbraucht.
Natürlich gibt es kein Ende für Dinge, die wir tun können, wie das Einfügen der Daten in eine Tabelle, das Senden an die Datenbank und so weiter.
quelle