在BaseEncrypter.php第45行中出现DecryptException:有效载荷无效


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

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

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

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

这里是我发送的头:

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令牌。

要做到这一点,您可以这样做:

添加一个meta标签:

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

设置你的jQuery使用这个令牌为所有的ajax请求,像这样:

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

原始回答

由于你有很多数据,可能你的数据库中的列类型太小,因此你得到这个错误。

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

相关文章:
  • 没有找到相关文章