2015-10-21 1 views
2

У меня есть приложение L5.1, которое использует jquery datatables с источниками данных ajax. Все они отлично работают, кроме того, что заставляет сервер генерировать исключение, когда он отправляет запрос ajax для получения данных. Ошибка я получаю:Laravel 5.1 DecryptException в строке BaseEncrypter.php 45: Недопустимая полезная нагрузка

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

Я думаю, что это, возможно, что-то делать с сколькими данных Ajax запроса проводки, так как это частное DataTable сообщения больше данных, чем другие. Также он должен иметь какое-то отношение к защите 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 

Любой знает, почему я получаю это ошибка?

ответ

5

Если вы хотите использовать CSRF-защиту, предоставляемую Laravel, вы должны указать токен CSRF в своих запросах.

Чтобы сделать это, вы можете сделать следующее:

Добавить мета-тег, как это:

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

и настроить ваш Jquery использовать этот маркер для всех Ajax запросов, как это:

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

Оригинальный ответ

Поскольку у вас много данных, возможно, тип столбца в вашей базе данных слишком мал, и поэтому вы получаете эту ошибку.

Попробуйте установить столбец longtext вместо text в вашей миграции и посмотреть, работает ли это.

+0

Моя колонка для чего? – geoffs3310

+0

Где именно вы храните данные? – Tim

+0

В каталоге данных отображается список шоу и шоу, которые имеют различные другие модели, связанные с ними, такие как продукты и презентаторы, поэтому его из разных таблиц в базе данных. Как упоминалось в исходном сообщении, хотя я не думаю, что это имеет какое-либо отношение к данным, поскольку, если я отключу защиту CSRF, он отлично работает. Таким образом, это должно быть то, что делает CSRF, что вызывает эту проблему. – geoffs3310

Смежные вопросы