Warum ist das CORS Anfrage, andernfalls nur im Firefox?

Ich bin Implementierung von CORS mit Anmeldeinformationen und einem preflight-Anfrage und ich bin ein wenig verwirrt, warum der preflight-Anfrage wiederholt nicht in Firefox 30 funktioniert aber in Safari (7.0.2) und Chrome 35. Ich denke, dass dieses Thema unterscheidet sich von "Warum funktioniert der preflight-OPTIONS-Anforderung von einem authentifizierten CORS-request funktionieren in Chrome aber nicht in Firefox?", weil ich bin nicht immer ein 401, sondern ein CORS-spezielle Nachricht von dem browser-client:

"Cross-Origin-Anfrage Blockiert: Die same-Origin-Policy verbietet das Lesen der remote-Ressource auf http://myurl.dev.com. Dies kann behoben werden, durch das verschieben der Ressource auf die gleiche domain oder die Aktivierung von CORS."

Zeigt ohne source-code, hier ist, was ich Tue:

Auf dem server:

Header für OPTIONEN Antwort:

  • Access-Control-Allow-Origin: [[kopieren Herkunft aus der Anfrage hier]]
  • Access-Control-Allow-Methods: "POST BEKOMMEN OPTIONEN"
  • Access-Control-Allow-Header: "X-Requested-With"
  • Access-Control-Allow-Credentials: "true"

Header für POST-Antwort:

  • Access-Control-Allow-Origin: [[kopieren Herkunft aus der Anfrage hier]]
  • Access-Control-Allow-Credentials: "true"

In den browser-client:

jQuery.ajax({
  url: requestUrl,
  type: 'POST',
  data: getData(),
  xhrFields: {
    withCredentials: true
  }
});

Pro spec, dies löst einen OPTIONEN preflight-request, muss der CORS-Header in seiner Antwort. Ich habe gelesen, durch die W3C-spec mehrere Male und ich kann nicht erkennen, was ich falsch mache, wenn überhaupt, in das preflight-Reaktion.

  • Bitte zeigen Sie die tatsächliche Anfragen/Antworten und/oder eine demo-Seite. Gerade jetzt, es gibt nicht genug details, und es scheint unmöglich zu sagen, wo die Dinge schief gehen.
  • Können Sie bestätigen, dass die OPTIONEN return-code 200?
  • Ich habe dieses Problem behoben. Es scheint, dass Firefox erwartet, dass die Liste in Access-Control-Allow-Methoden werden durch Komma getrennt. Ich geändert es zu "POST, GET, OPTIONS" und es magisch zu arbeiten begonnen. Ich dachte mir, diese sorgfältig zu Lesen developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
InformationsquelleAutor rq_ | 2014-07-01
Schreibe einen Kommentar