php - Laravel 5.1 DecryptException 在 BaseEncrypter.php 第 45 行 : The payload is invalid

标签 php laravel laravel-5 laravel-5.1

我有一个 L5.1 应用程序,它使用带有 ajax 数据源的 jquery 数据表。除了导致服务器在发布 ajax 请求以获取数据时抛出异常之外,它们都工作正常。我得到的错误是:

DecryptException in BaseEncrypter.php line 45:
The payload is invalid.

我认为这可能与 ajax 请求发布的数据量有关,因为这个特定的数据表发布的数据比其他数据表多。它还必须与 CSRF 保护有关,因为如果我从 CSRF 中排除路由,那么它就可以正常工作。

这是我发送的 header :

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:1589
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:gsScrollPos=; _gat=1; _ga=GA1.2.478522745.1445258590; XSRF-TOKEN=eyJpdiI6IlVYckJ5RW5rcVFVUlU0RjJLYjNmOWc9PSIsInZhbHVlIjoiRzRPcG4wWEhsaHVsSGdFRzh0UnhWWU5kXC9Jd0F1YWNjK0poOW5TcVpWMHhSZ0l6MXNtWVdZZ1pJVHBrRUJpYkZuaENacUxsM2M4RkxKOGVoNG5BSGtnPT0iLCJtYWMiOiJkNGUxOWM0NzQ2MThjNDg1OTg0MjIwYmY5NGNmZGEzNzc5ZjZiNmExYTQ1Yjk0YTc2YWRlMTYyZDI5OWQ5N2ZkIn0%3D; session=eyJpdiI6ImdpRXozUXBmT2lLRmhOSnU0QW9zTlE9PSIsInZhbHVlIjoiMmN3QXZWeVFqWEhMSmw1QTdIaEY4WU1EOEszM1RKQU0xTE00Z2I5VVh3RjNLSFpqQUZ6dDRYdU0rK3FVekhZXC9rZkNWakN4a0ZtOTMrYnZDS0doWHF3PT0iLCJtYWMiOiI0MDA3ZDgyNTI3MTY0ZDlmNjZjM2IzYmJjZTQ2NTc4ZjdiNDRjN2M4M2VhMWU1MDc2YzE1ZmM1MDA1M2NkNDZlIn0%3D
Host:local.thecraftchannel.tv
Origin:https://local.website.com
Pragma:no-cache
Referer:https://local.website.com/admin/shows/edit/1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36
X-Requested-With:XMLHttpRequest
X-XSRF-TOKEN:PGBwTUHVjIQJPuZHLhqX2yEJFl0srgP1J4lO2oJy

这是通过请求发送的表单数据:

draw:1
columns[0][data]:0
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:1
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:2
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:true
columns[2][search][value]:
columns[2][search][regex]:false
columns[3][data]:3
columns[3][name]:
columns[3][searchable]:true
columns[3][orderable]:true
columns[3][search][value]:
columns[3][search][regex]:false
columns[4][data]:4
columns[4][name]:
columns[4][searchable]:true
columns[4][orderable]:true
columns[4][search][value]:
columns[4][search][regex]:false
columns[5][data]:5
columns[5][name]:
columns[5][searchable]:false
columns[5][orderable]:false
columns[5][search][value]:
columns[5][search][regex]:false
order[0][column]:0
order[0][dir]:asc
start:0
length:10
search[value]:
search[regex]:false
product_ids[]:8
product_ids[]:5
product_ids[]:4
product_ids[]:3
product_ids[]:6
product_ids[]:9
product_ids[]:14
product_ids[]:11
product_ids[]:16
product_ids[]:21
product_ids[]:23

有人知道我为什么会收到此错误吗?

最佳答案

如果你想使用 Laravel 提供的 CSRF 保护,你必须在你的请求中指定 CSRF token 。

为此,您可以执行以下操作:

添加这样的元标记:

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

并设置您的 jQuery 以将此 token 用于所有 ajax 请求,如下所示:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

原始答案

由于您有大量数据,可能您数据库中的列类型太小,因此您会收到此错误。

尝试在迁移中将列设置为 longtext 而不是 text ,看看是否可行。

关于php - Laravel 5.1 DecryptException 在 BaseEncrypter.php 第 45 行 : The payload is invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255002/

相关文章:

php - 在类 ObjectRepository 中找不到方法 'QueryBuilder'

php - Laravel 试图获取非对象的属性 'project_name'

php - 试图获取非对象错误的属性 - Laravel

laravel - fatal error : Class 'App\Http\Controllers\Redirect' not found

php - 迁移匿名 session 数据并将其限制为经过身份验证的用户

php - Laravel Blade,Yield 默认部分似乎已停止正常工作

php - 帖子排名靠前的用户 mysql

php - 如何使用 PHP 在目录中找到前 5 个文件?

php - PDO lastInsertId 对事务不起作用?

javascript - 如何访问类中被单击的元素