2016-07-21 3 views
0

Ich versuche eine POST-Anfrage mit Guzzle an einen entfernten Laravel-Server zu senden. Das Problem ist, dass die Anfrage aufgrund der Standard-Laravel-csrf-Middleware immer abgelehnt wird.Wie Laravel CSRF beim Senden einer Guzzle POST-Anfrage zu behandeln?

Die Anforderung wird zum Weiterleiten einer Bilddatei verwendet, die ein Benutzer vom Hauptserver auf einen Server zum Speichern von Bildern hochlädt.

Gibt es eine Möglichkeit, das richtige Token mit Guzzle zu setzen?

Wenn nicht, wäre es sicher, die csrf-Middleware für den Bilderserver auszuschalten, da sie nur Anfragen von einem anderen Server erhält?

Antwort

0

Sie können ein CSRF-Token generieren, bevor Sie die Anforderung senden und in der Kopfzeile als X-CSRF-Token hinzufügen.

+0

Wie würde ich darüber gehen zu tun? Ich bin damit nicht so vertraut. –

+0

Das Dokument ist ziemlich gut erklärt http://docs.guzzlephp.org/en/latest/request-options.html#headers – Vuldo

+0

in den Kopfzeilen X-XSRF-TOKEN gesetzt => csrf_token() – wdog

0

Ich weiß, das ist ziemlich alt, aber die einfache Antwort ist, können Sie diese Anfrage nicht erfolgreich verifizieren, zumindest, wie für Laravel 5.5 LTS.

Wenn Sie also Ihre POST-Anfrage bearbeiten wollen, übergeben Sie entweder das richtige Token (was in Ihrer Anfrage nicht möglich ist), oder entfernen Sie csrf checking von midlleware VerifCsrfToken.

Sie können es tun, indem Sie Ihre Route zu protected $except in Ihrer /app/Http/Midddleware/VerifyCsrfToken.php Datei einschließlich ...

Sofern Ihre Anfrage von anderen Websites kommt, machst du wahrscheinlich etwas falsch ...

2

Da Sie einen Remote-Laravel-Server sagen, können CSRF-Tokens nicht erwartet werden. CSRF-Tokens sind für Webseiten, die mit demselben Laravel-Code erstellt wurden.

  1. Sie können für diese Strecke CSRF-Token an /app/Http/Midddleware/VerifyCsrfToken.php ausschalten, durch Aktualisierung:

protected $ außer = [ 'your-Bild-Route-url'];

  1. Umgang mit Authentifizierung über API-Token (Authorization: Inhaber/oder Reisepass)