PHP - заголовки / конфиг "разрешить происхождение" не работают - PullRequest
0 голосов
/ 30 января 2020

Мои заголовки не работают, я получаю ошибку cors, как только я запрашиваю сайт, который требует заголовок "Авторизация". Похоже, что я могу поместить каждое возможное значение в Allow-Origin, и он выдаст тот же результат (я все еще могу получить доступ ко всем сайтам, для которых не требуется авторизация, даже если для Allow-Origin установлено случайное значение, например "www.zzzawhdhawd.com «). Я также могу делать запросы GET, хотя я явно разрешаю только POST.

У меня есть API отдыха, и каждый файл api начинается так:

<?php

    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    header("Access-Control-Allow-Methods: POST, OPTIONS");
    header("Access-Control-Max-Age: 3600");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

Мой apache2.conf выглядит вот так

# Allow Origin
Header set Access-Control-Allow-Origin '*'

.htaccess

# Turn on the rewrite engine
RewriteEngine  on
# If the request doesn't end in .php (Case insensitive) continue processing rules
RewriteCond %{REQUEST_URI} !\.php$ [NC]
# If the request doesn't end in a slash continue processing the rules
RewriteCond %{REQUEST_URI} [^/]$
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite the request with a .php extension. L means this is the 'Last' rule
RewriteRule ^(.*)$ $1.php [L]

Header set Access-Control-Allow-Origin '*'

Правильно ли я реализовал заголовки?

1 Ответ

0 голосов
/ 30 января 2020

Метод GET не добавляется в заголовки. Попробуйте изменить, как это.

header("Access-Control-Allow-Methods: POST, GET, OPTIONS");

Если это не работает, попробуйте заголовки, как это:

        $headers = [
            'Access-Control-Allow-Origin' => '*',
            'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Max-Age' => '86400',
            'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With'
        ];

        foreach ($headers as $key => $value) {
            header($key . ': ' .  $value);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...