Ich versuche zu lernen, wie ich ein csrf-Token (ich benutze Laravel) mit einer Ajax-Anfrage übergeben kann, da meine Ajax-URL 500 zurückgibt, weil ihr das csrf-Token nicht gegeben wurde.Senden von Ajax-Anfragen mit Laravel
Ist die Verwendung einer get-Anfrage weniger sicher? können Leute die Anfragen von einer externen Seite spoofen? Ich bin nur auf der Suche nach dem besten Weg, dies ohne Sicherheitslücken wirklich zu tun.
Hier ist mein Ajax-Code:
saveHousekeepingNotes();
function saveHousekeepingNotes() {
$.ajax({
url: "/ajax/save-notes",
type: "POST",
data: 'Here we have some data.',
beforeSend: function(xhr) {
$('.notes-status-holder').html('Saving...');
},
success: function(data) {
var jqObj = jQuery(data);
var d = new Date();
$('.notes-status-holder').html('autosaved ' + d.toLocaleTimeString());
setInterval(function() {
saveHousekeepingNotes();
}, 5 * 1000);
},
});
}
In meiner Blade-Datei:
<script>$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });</script>
In meinen Routen:
Route::group(['middleware' => 'ajax', 'prefix' => 'ajax'], function() {
Route::any('/save-notes', '[email protected]');
});
In meinem Ajax-Controller:
<?php
namespace App\Http\Controllers\Admin\Admin;
use Illuminate\Http\Request;
use Cache;
use Auth;
use App\Database\Website\User\Roleplay;
class AjaxController
{
public function saveNotes()
{
if (!Auth::guest()) {
$roleplay = Roleplay::where('user_id', Auth::user()->id)->first();
$roleplay->housekeeping_notes = 'We saved it:) ' . rand(10,40);
$roleplay->save();
}
}
}
Meine Ajax-Middleware prüft nur, ob $ request-> ajax() einen Ajax-Aufruf verifiziert. Was ich im Grunde frage ist, wie kann ich den csrf-Token sicher übergeben? Geht Laravel damit um? oder gibt es einen besseren Weg, dies zu tun ..
Mögliches Duplikat [Laravel TokenMismatchException in ajax-Request] (http://stackoverflow.com/questions/21627170/laravel-tokenmismatchexception-in-ajax-request) – teynon