jquery - 在 laravel 5.1 中面临 302 重定向
问题描述
我是从 ajax 到控制器/方法的 POST 数据,但是当 ajax 访问该方法时面临 302 重定向,但仍然显示 302 错误。使用 ajax 它重定向到登录视图。为什么?
控制器
public function ajax(Request $request){
return 1;}
路线
Route::group(array('module'=>'Guest','namespace' =>
'App\Modules\Guest\Controllers'), function() {
Route::post('ajax','GuestController@ajax')->name('ajax');
}
脚本:
$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
$(document).ready(function(){
// Load more data
$('.load-more').click(function(){
var row = Number($('#row').val());
var allcount = Number($('#all').val());
var rowperpage = 3;
row = row + rowperpage;
if(row <= allcount){
$("#row").val(row);
$.ajax({
url: "{{url('GuestController/ajax')}}",
type: 'post',
datatype: 'JSON',
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
data: {row:row},
success: function(data){
alert(data);
}
});
}else{
console.log('if is not working');
}
});
});
它应该命中 ajax() 方法。
解决方案
添加“X-Requested-With”、“XMLHttpRequest”。这尤其是出于安全考虑,因为它可以防止 CSRF 攻击,因为在未经服务器同意的情况下,不能通过 CORS 将此标头添加到 AJAX 跨域请求中。
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}
});