Das hinzufügen von X-CSRF-Token-header, die Global auf alle Instanzen von XMLHttpRequest();
Ich bin mit einem Drittanbieter-Bibliothek, die erstellt einen raw - XMLHttpRequest
mit new XMLHttpRequest
.
Diese umgeht meine CSRF-Schutz und wird abgeschossen durch meine rails-server.
Gibt es eine Möglichkeit, Global hinzufügen einer vordefinierten CSRF-token ($('meta[name=csrf-token]').attr('content')
) für ALLE Instanzen von XMLHttpRequest
bei der Instanziierung Zeit?
- haben Sie versucht,
$.ajaxPrefilter
? und hier ist ein Beispiel: Hinzufügen von CSRF-token zu jQuery AJAX-Anforderungen - Warum möchtest du third-pary-Bibliotheken, die nicht wissen, wie Sie Kontakt mit Ihrem api-richtig?
- Nein, der OP sagt, es ist ein raw -
XMLHttpRequest
!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen intercept Anrufe der
send
Methode:Dies nicht hinzufügen des headers bei der Instanziierung Zeit, aber richtig, bevor die Anfrage gesendet wird. Sie kann abfangen von aufrufen zu
new XMLHttpRequest()
als gut, aber das wird nicht hilfreich sein, da Sie warten müssen, mit dem hinzufügen der Kopfzeile, bisopen
genannt wurde.Möchten Sie vielleicht auch, um einen test für die Ziel-URL der Anfrage, so dass Sie nur fügen Sie die Kopfzeile, wenn Ihre eigene api aufgerufen wird. Tut man das nicht, könnte Auslaufen der token anderswo, oder vielleicht sogar brechen cross-domain-CORS Anrufe, die nicht erlauben, dass dieser header.
open
als gut, aber ich wollte nicht einfach wiederholen Sie den code aus deiner Antwort. Du hast ein +1 nur als ich sah, wie Ihre post-pop-up 🙂.send
Eigenschaften, diesend
Methode nicht Erben.apply
alle Macken ist möglich (alte IEs ist bekannt, dass solche Merkwürdigkeiten in Ihren DOM). Doch in modernen Browsern funktioniert dies, respektieren Sie die Web-IDL-Spezifikation für das implementieren der HTML5-apis in javascript.können Sie wickeln Sie die ajax-open () - Methode zu öffnen, und legen Sie dann den Kopf sofort:
Wenn du eine Jquery-unabhängige Lösung, die Sie verwenden könnten: