Laravel - React был заблокирован политикой CORS - PullRequest
2 голосов
/ 09 июля 2019

Я создал API с помощью Laravel и загрузил его на хост для совместного использования Linux, и когда я хочу использовать API с моим React SPA.Он работает отлично, но на этот раз я загрузил исходный код API Laravel на сервер Centos в папке моего домена, и когда я хочу подключиться к API с помощью React SPA, Chrome сообщает:

былозаблокирован политикой CORS: ответ на запрос предварительной проверки не проходит> проверка контроля доступа: в> запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

и при добавленииэти коды для htaccess:

Header always add Access-Control-Allow-Origin "*"
Header always add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header always add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

ошибка меняется на:

Ответ на предпечатный запрос не проходит проверку контроля доступа: не имеет HTTP-статуса ok.

Я установил https://github.com/barryvdh/laravel-cors в Laravel.


Домен SPA: web.example.com Домен API: example.com/test

Я протестировал егоизменив домен API на основной домен.

Я активировал mod_header в Centos.


// my kernel with laravel package
protected $middlewareGroups = [
        'api' => [
            \Barryvdh\Cors\HandleCors::class,
        ],
    ];
// my kernel with cors middleware that i created manually
protected $middleware = [
        \App\Http\Middleware\Cors::class,
    ];
// my api route 
Route::namespace('Api')->middleware('cors')->group(function () {

1 Ответ

0 голосов
/ 10 июля 2019

У меня это работает в одном из моих проектов: https://github.com/devinsays/laravel-react-bootstrap/search?q=cors&unscoped_q=cors.

В приложении / Http / Kernel.php:

'cors' => \Barryvdh\Cors\HandleCors::class,

На маршрутах:

// Auth Endpoints
Route::group([
    'middleware' => 'cors',
    'prefix' => 'api'
], function ($router) {
    Route::post('example', 'Auth\ExampleController');
});

А в cors / config.php:


<?php
return [
    /*
    |--------------------------------------------------------------------------
    | Laravel CORS
    |--------------------------------------------------------------------------
    |
    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
    | to accept any value.
    |
    */
    'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['Content-Type', 'X-Requested-With'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,
];

Надеюсь, это поможет!

...