CORS / JavaScript / Laravel: отправка запроса на сервер Digital Ocean и получение данных (проблемы с заголовками) - PullRequest
0 голосов
/ 27 мая 2019

Итак, я пытаюсь использовать каплю Digital Ocean в качестве API для приложения, размещенного на другом сервере.В настоящее время я только разрабатываю, так что этот сервер от моего localhost: 3000.

В моем коде на стороне клиента (JavaScript) у меня есть:

  handleSendData = () => {
    const request = new XMLHttpRequest()
    request.open('POST', 'http://my-droplet-ip/api/create-image')
    request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8')
    request.setRequestHeader('Access-Control-Allow-Origin', 'http://my-droplet-ip')
    request.send(JSON.stringify(data-object))
  }

Наконец, в моем приложении Laravel (Laravel Framework 5.8.18) У меня есть маршрут под routes/api.php:

Route::post('/create-image', 'CreateData');

И у меня есть контроллер CreateData.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CreateImage extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        return response('Hello World', 200)
            ->header('Content-Type', 'application/json; charset=UTF-8')
            ->header('Access-Control-Allow-Origin', '*');
    }
}

Проблема заключается в том, когда я пытаюсь запуститьВ этом запросе я получаю сообщение об ошибке CORS:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу http://my -droplet-ip / api / create-image ,(Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»)

На вкладке «Сеть» я получаю 404, не найденный, и заголовок Access отсутствует в ответе.

Любойесть мысли по этому вопросу?

1 Ответ

0 голосов
/ 28 мая 2019

Это простое решение, и оно подходит для тестирования на вашей локальной машине.

Вы можете просто вставить индексный файл, чтобы разрешить cors, но я предлагаю вам создать промежуточное программное обеспечение для этого.

Вот ссылка, это действительно хорошо объяснено:)

https://medium.com/@petehouston/allow-cors-in-laravel-2b574c51d0c1

Вы также можете поместить это в index.php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...