Laravel + axios - сбой запроса CORS для ответа text / html - PullRequest
0 голосов
/ 22 октября 2018

Что у меня есть :

1) Два приложения: клиент (Vue точно) на https://domain.local и API (Laravel 5.7) на https://api.domain.local.

2) axios для вызовов API на клиенте:

axios.post( //url, { //data })

3) Сторона API:

//routes/api.php
Route::resource('users', 'UserController');

//app/Http/Kernel.php
'api' => [
    'throttle:60,1',
    'bindings',
    HandleCors::class, //<--https://github.com/barryvdh/laravel-cors
],

//config/cors.php
'supportsCredentials' => true,
'allowedOrigins' => ['*'],
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],
'exposedHeaders' => [],
'maxAge' => 0,

//UserController@store - method I'm testing
public function store(Request $request)
{
    dd($request);
}

Моя проблема :

dd($request) возвращает text/html MIME ответ.И мой POST-запрос от клиента терпит неудачу.

Есть два запроса от клиента: «OPTIONS» и «POST».Оба с 200 ответом между прочим.Заголовки ответа «OPTIONS»:

HTTP/1.0 200 OK
Cache-Control: no-cache, private
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://domain.local:8080
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: CONTENT-TYPE

Заголовки запроса «OPTIONS»:

Accept: */*
Access-Control-Request-Headers: content-type
Access-Control-Request-Method: POST

Заголовки ответа «POST»:

Content-Type: text/html; charset=UTF-8

Заголовки запроса «POST»:

Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8

Ошибка браузера:

Блокировка перекрестного чтения (CORB) заблокировала ответ перекрестного источника https://api.domain.local/users с текстом MIME типа / html.См. https://www.chromestatus.com/feature/5629709824032768 для получения дополнительной информации.

Когда я удаляю dd(...) и возвращаю соответствующий ответ, все в порядке, но я хочу получить это dd(...) на данный момент.

То, что я попробовал (пока ничего не помогло):

1) отправить withCredentials флаг

axios.post(//url, {
          withCredentials: true,
          //data
        })

2) отправить XMLHttpRequest заголовок

axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'

3) изменение cors config:

'allowedHeaders' => ['Access-Control-Allow-Origin'],

или

'allowedOrigins' => ['https://domain.local:8080'],

вызвано ответом "Заголовок не разрешен" 403.

PS Любой запрос работает нормально при использовании Insomnia или Postman.

...