首页 > 解决方案 > 在 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() 方法。

标签: jqueryajaxlaravel

解决方案


添加“X-Requested-With”、“XMLHttpRequest”。这尤其是出于安全考虑,因为它可以防止 CSRF 攻击,因为在未经服务器同意的情况下,不能通过 CORS 将此标头添加到 AJAX 跨域请求中。

$.ajax({
 type: "POST",
 beforeSend: function(request) {
  request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
 }
});

推荐阅读