【发布时间】:2021-10-16 23:35:02
【问题描述】:
我在 ajax 调用期间收到 403 forbidden。
仅当ajax 在app.js 上时才会发生这种情况。
如果我将remove 从app.js 转到index.blade.php,则工作正常。
如何让它在我的app.js 上也能正常工作?
查了很多,发现需要添加这个
$.ajaxSetup({ 标题:{ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
在 ajax 之前,但仍然无法正常工作..
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class API extends Controller
{
public function getSomething(Request $r)
{
$r->validate([
'user' => 'required'
]);
$data = DB::table('posts')->orderBy('id', 'desc')->get();
return $data;
}
}
web.php
Route::group(['prefix' => 'api'], function(){
Route::post('getSomething', 'API@getSomething');
});
index.blade.php
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<meta name="csrf-token" content="{{ csrf_token() }}" />
.... some of my content ....
<script src="{{ asset('assets/js/app.js') }}"></script>
app.js
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ url("api/getSomething") }}',
type: 'POST',
data: {
user: '1',
_token: '{{ csrf_token() }}',
_testThisAjax: true
},
success: function (c) {
console.log(c);
},
error: function(e)
{
console.log(e);
}
});
【问题讨论】:
标签: javascript ajax laravel api