Laravel 5 GET API-вызов работает, но POST API-вызовы не работают - PullRequest
0 голосов
/ 13 июня 2018

Как отключить проверку CSRF на маршрутах API в laravel?

В API routes я вызываю функцию через метод POST и GET.GET methord, возвращающий данные, но метод POST-метода не нашел исключение.

Вот мой пример кода в routes/api.php

Route::post('hellopostapi', function() {
    return json_encode( 'we are getting POST response');
});

Route::get('helloget', function() {
    return json_encode( 'we are getting GET response);
});

Для вызова GET я получаю ответ, как и ожидалось.И для POST я получаю это исключение

"message": "", "exception": "Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException",

"file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",

"line": 255,

"trace": [
    {
        "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",

        "line": 242,

        "function": "methodNotAllowed",

        "class": "Illuminate\\Routing\\RouteCollection",

        "type": "->"
    },
    {
        "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",
        "line": 176,
        "function": "getRouteForMethods",
        "class": "Illuminate\\Routing\\RouteCollection",
        "type": "->"
    },

Я также добавил маршруты api в verifycsrf.php, в соответствии с документацией он должен работать, к сожалению, он не работает для меня.вот мой verifiycsrf.php

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'api/*',
    ];
}

скриншот тестирования API POST-запрос, который вызывает проблему enter image description here

Получить запрос, которыйработает нормально enter image description here Это все еще не работает.Может кто-нибудь, пожалуйста, помогите мне. Спасибо

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Если углубиться в это, я обнаружил, что это никогда не было проблемой Laravel, скорее это было вызвано из-за перенаправления HTTP на HTTPS.После изменения http на https проблема кажется решенной.:)

0 голосов
/ 13 июня 2018

Проверьте метод формы, из которого вы отправляете сообщение, весьма вероятно, что этот метод является методом GET, но в файле маршрутов вы настроили его для использования метода POST

...