Отправить данные постов с внешнего сайта в laravel - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть веб-сайт, который при отправке сообщения переходит на внешний сайт, на котором установлен laravel.У меня есть общая форма на веб-сайте, и после отправки я продолжаю получать ошибку 419 в laravel.Я добавил URL в VerifyCsrfToken, и он все еще не будет работать.

/ app / Http / Middleware / VerifyCsrfToken.php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
     *
     * @var bool
     */
    protected $addHttpCookie = true;

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'https://pharaohmfg.com/collections/*'
    ];
}

web.php

Route::get('/', 'PostController@index')->name('home.index');
Route::post('callback', 'PostController@callback')->name('callback.post');

postController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

class PostController extends Controller 
{
    public function index(Request $request)
    {
        return redirect()->away('http://pharaohmfg.com');
    }

    public function callback(Request $request)
    {
        return $request->all();
    }
}

что я делаю не так?веб-сайт https://pharaohmfg.com/collections/billiard-pool-tables/products/siamun-pool-table

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

У вас есть несколько вариантов, которые лучше, чем ваш текущий ответ.

Исправьте ваш $except

Во-первых, ваш $except должен быть маршрутом, на который отправляется форма,не URL-адрес формы.Это имеет то преимущество, что все, что находится в приложении Laravel, защищено токенами CSRF.Ваше текущее решение отключает их все для всего.Это не идеальный вариант, но он будет выполнять то, что вы хотите сделать.

iframe Ваша форма

Сделайте форму iframe, чтобы вы могли иметь законный токен CSRF.Именно это часто делают FaceBook и Twitter (или в последний раз, когда я смотрю) для своих кнопок социальных сетей (например, поделиться, ретвитнуть).

Ajax

Настраивая заголовки cors, вы можетенаписать какую-нибудь необычную js для получения токена CSRF с другого маршрута, сохраняя форму на внешнем сайте.Плюс в том, что вы также можете отправить форму, используя ajax, что делает существование внешнего сервера очевидным.Это, как и решение iframe, позволит обслуживать все с соответствующими токенами CSRF.

0 голосов
/ 18 февраля 2019

Я разобрался,

в app / http / kernel.php. Я прокомментировал класс verifycsrftoken с момента загрузки.

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            //\App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...