2015-10-28 2 views
0

Я пытаюсь выполнить POST-данные, используя командную строку, используя curl.Laravel 5 - Опубликовать данные JSON с помощью curl

curl -v POST -d ' { "data1": "sample1", "data2": "sample2" } ' -H "Content-Type: application/json" -H "Authorization: BASIC vkslnkg561mZEqCq3l3RglAOAZ7d8XBeg2VjIAyC" http://localhost/Bowling/public/api/foo 

Когда я пытаюсь выполнить POST из POSTMAN, я возвращаю данные. Но когда я использую curl, я получаю 500 Internal Server Error.

Мой routes.php

Route::any('api/foo', function() { 
    return json_encode("Some Data"); 
}); 

Могу ли я знать, это что-то не так с моей завитка заявления или какой-либо проблемы аутентификации, что мне нужно исправить в Laravel.

Я даже пытался с

curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' -H "Authorization: BASIC 0xD8BC2CLksEMh1ScRdG8dWanCDazYiQsGL7sYnl" http://localhost/Bowling/public/api/foo 
+0

Вы просмотрели свои журналы, чтобы узнать, почему вы получаете ошибку 500? – James

+0

Эй Джеймса, он говорит local.ERROR: исключение 'Осветите \ Session \ TokenMismatchException' в G: \ WAMP \ WWW \ Bowling \ поставщик \ compiled.php: 2440 Но я получаю выход с тем же самым для завитка - v -H "Content-Type: application/json" -H "Авторизация: BASIC 0xD8BC2CLksEMh1ScRdG8dWanCDazYiQsGL7sYnl" http: // localhost/Bowling/public/api/leagues –

+0

Если я удалю 'App \ Http \ Middleware \ VerifyCsrfToken', в app/Http/Kernel.php, то это работает. Но мне нужен токен аутентификации. –

ответ

0

Там нет ничего плохого в том, что вы делаете. Его просто задержка в ваших вызовах, которая вызывает несоответствие токена. Я столкнулся с такой же проблемой, когда вручную тестировал свои API через почтальон. Печально, что у Laravel нет декоратора, чтобы освободить CSRF, как Django.

На почтальоне я смог проверить свои проблемы с API, написав маршрут, который возвращает csrf token. Затем я копирую этот токен и передаю его как данные формы в следующем следующем вызове POST. Я не мог найти альтернативы.

Дайте мне знать, если это сработает для вас.

+0

Эй @ Вишал, это хороший подход, проблема заключается в данных, а токен csrf должен быть отправлен в одиночной попытке. Я получаю ожидаемые результаты с помощью Postman. –

+0

вы пробовали отправить токен csrf с ключом '_token' как ключом и csrf_token как значение вместе с данными сообщения. Однако, чтобы получить токен CSRF, вам необходимо хотя бы сделать GET-вызов на сервер. Таким образом, отправка данных и получение csrf не могут быть выполнены. –

+0

Знак csrf предоставляется нам, i = так что в основном у нас есть токен csrf с нами. Просто нужно отправить заголовок с данными. В почтальоне я использовал ключ как _token и значение csrf. Но когда я отправляю с помощью curl, его метая 500 Server error. –

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