Ответ 405 Laravel на запросы OPTIONS - PullRequest
0 голосов
/ 08 декабря 2018

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

Вот то, что я пробовал,

  • Обработка промежуточного программного обеспечения В этом случае я действительно создалнового промежуточного программного обеспечения и поместите этот код как handle метод.

public function handle($request, Closure $next) { return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); }

, и я добавил это в массив $middleware в kernel.php

  • Использование laravel-cors

Я использовал библиотеку laravel-cors для обработки коров, но не работает тоже

  • Добавление кодов обработки cors в public / index.php

Я добавил ниже коды в верхней части public/index.php файл,

if (isset($_SERVER["HTTP_ORIGIN"]) === true) {
    $origin = $_SERVER["HTTP_ORIGIN"];
    $allowed_origins = array(
        "https://tapesh.io",
        "http://tapesh.io",
        "http://my.tapesh.io",
        "http://panel.tapesh.io",
    );
    if (in_array($origin, $allowed_origins, true) === true) {
        header('Access-Control-Allow-Origin: ' . $origin);
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Allow-Methods: *');
        header('Access-Control-Allow-Headers: Content-Type, X-Auth-Type, Origin');
    }
    if ($_SERVER["REQUEST_METHOD"] === "OPTIONS") {
        exit; // OPTIONS request wants only the policy, we can stop here
    }
}
  • Apache config

Также я проверил журналы ошибок apache.ошибка была примерно такой:

[сб 07.12: 35: 36.678676 2018] [allowmethods: error] [pid 7902: tid 139855840466688] [клиент 84.417.45.0:4012] AH01623: клиентметод запрещен конфигурацией сервера: «OPTIONS» в /home/main/domains/example.com/private_html/api

Я нашел это в Google и выяснил, что для обработки этого с помощью Apache я должен добавить Require all grantedв конфигурационный файл Apache 2.4 моего домена.Я сделал, но не работал!

Я должен также сказать, что в других проектах я использовал библиотеку laravel-cors , и это решило мою проблему.

Я действительно запутался!

1 Ответ

0 голосов
/ 08 декабря 2018

попробуйте добавить заголовки в ваш файл rout.php:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');

добавьте дополнительные заголовки Allow- *, если хотите.но, конечно, я рекомендую вам использовать свой код в разделе «Добавление кодов обработки кодов в public / index.php» вашего вопроса в rout.php, потому что это более безопасная ставка

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