托管在AWS EC2中时,Laravel Ajax导致419个未知状态响应

时间:2019-05-06 07:35:48

标签: ajax laravel-5 amazon-ec2

当托管在AWS-EC2中时,Laravel ajax存在此问题,导致419个未知状态响应。

我已经搜索并尝试了几乎所有给出的解决方案,但是问题仍然存在。

我的元标记包括CSRF

<meta name="csrf-token" content="{{ csrf_token() }}">

下面是我的laravel ajax代码

$(document).ready(function () {
    var BASE_URL = "{{url('/')}}";
    $("form[name='logForm']").validate({
        rules: {
          log_email: {
            required: true,
            email: true
          },
           log_password: {
            required: true,
            minlength: 5
          },
        },
        messages: {
          log_email: "Please enter a valid email address",
          log_password: "Enter a valid password",
        log_email: "Please enter a valid email address"
        },
        submitHandler: function(form) {
         logForm();
        }
    });
    function logForm() {

        log_email=$("#log_email").val();
        log_password=$("#log_password").val();
        error=0;
        if (log_email == '' && log_password=='') {
            error = 1;
        }
        if (error == 0) {
            $.ajaxSetup({
                // beforeSend: function(xhr, type) {
                //     if (!type.crossDomain) {
                //         xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
                //     }
                // },
                headers: {
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $.ajax({
                //url : BASE_URL + '/userlogin',
                url: '/userlogin',
                data: {
                    '_token':  '{!! csrf_token() !!}',
                    'email': $("#log_email").val(),
                    'password': $("#log_password").val()
                },
                dataType: 'json',
                type: 'POST',
                cache: false,
                success: function (response) {
                    if (response.type =='success') {
                        @if(Request::is('page-not-found'))
                         window.location=BASE_URL;
                         @else
                          window.location.reload();   
                         @endif
                    } else if(response.type=='suspended'){
                        $('#log_suspended').show();
                         $('#log_spiner').hide();
                    }
                    else {
                        $('#log_err').show();
                         $('#log_spiner').hide(); 
                        //alert(response.message);
                    }
                },
            });
        }
    }
});

我已经在jquery中注释了几行,这些是我尝试过的解决方案。

尝试添加,

contentType: false,
processData: false,

同样,如果我添加processData,则在控制台Form-Data中将其显示为[object Object]

下面是从控制台获取的请求标头和表单数据:

Request Headers and Form Data

在我的web.php页面中,我有以下内容:

Route::post('/userlogin', 'HomeController@login');

上面相同的代码在现有主机和我的本地主机中也可以工作。

我还确保.env中的APP_URL和SESSION_DOMAIN相同。

如有需要,我可以提供更多信息。

*这个问题听起来像是重复的,但尝试时这些答案对我不起作用。

请告知。

谢谢

-维杰

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

许多问题都需要检查:

  

我还确保.env中的APP_URL和SESSION_DOMAIN为   一样。

但是我在一个堆栈问题中发现要从.env中删除SESSION_DOMAIN,然后确保

'domain' => env('SESSION_DOMAIN', null),

行出现在config / session.php

这对我有用。

可能会杀死像我一样面临类似问题的人。