Laravel 5 ajax循环TokenMismatchException和密码无效

时间:2017-01-24 13:03:10

标签: php ajax laravel-5.2

在我的Laravel 5.2应用程序中,我试图通过ajax在循环中发布一些URL但是我遇到了两个问题:

  

找不到支持的加密器。密码和/或密钥长度无效。

  

TokenMismatchException

Javascript代码:

urls.each(function(url) {
    var data = {
        urls: url.value
    };

    $.ajax({
        type: "POST",
        url: "/ajax/checkUrl",
        data: data,
        headers: {'X-CSRF-TOKEN': '{!! csrf_token() !!}'},

        success: function (data) {
            var result = $.parseJSON(data);
            console.log(result['msg']);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console.log('Error: ' + thrownError);
        }
    });
});

routes.php文件

Route::group(['domain' => env('APP_URI')], function() {

    Route::group(['middleware' => ['auth']], function () {

        Route::post('ajax/checkUrl', 'AjaxController@checkUrl');

    });

});

我的AjaxController方法只是使用cURL跟踪每个URL,获取一些数据并将其传回视图。

通常,我收到错误

  

production.ERROR:异常'RuntimeException',消息'找不到支持的加密器。密码和/或密钥长度无效。在C:\ wamp \ www \ app \ vendor \ laravel \ framework \ src \ Illuminate \ Encryption \ EncryptionServiceProvider.php:45

它首先工作但是在约50个ajax请求之后,其中一些开始失败并出现500(内部服务器错误)。

我尝试过:

  • 排除了VerifyCsrfToken中间件中的ajax URL。
  • 修改了VerifyCsrfToken中间件,就像Stackoverflow的一些人建议的那样
  • 生成新的应用密钥

在我的config / app.php中,我有:

 'key' => env('APP_KEY'),

 'cipher' => 'AES-256-CBC',

我的代码在Laravel应用程序之外独立工作,所以即使我从CSRF保护中排除了URL,我也不知道为什么会出现这些错误?

这些错误发生在localhost上。生产服务器在约100个ajax请求后生成 401 Unauthorized ,有时会将我退出。

为什么会出现这种情况的任何建议?

0 个答案:

没有答案