Проблемы CORS: заголовок содержит несколько значений, но разрешено только одно - PullRequest
1 голос
/ 22 марта 2019

Я пытался найти решение этой проблемы в течение целого часа головной боли и не мог продвинуться ни на шаг дальше, поэтому я надеюсь, что somenone может дать мне несколько указателей и избавить меня от головной боли:

У меня есть внешний интерфейсдля этого нужно получить некоторые данные через axios из внутреннего API.В моем бэкэнде у меня есть .htaccess со следующей частью:

<IfModule mod_headers.c>
        Header set X-Content-Type-Options "nosniff"
        Header set X-XSS-Protection "1; mode=block"
        # Always set these headers for CORS.
        Header always set Access-Control-Max-Age 1728000
        Header always set Access-Control-Allow-Origin: "*"
        Header always set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
        Header always set Access-Control-Allow-Headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,C$
        Header always set Access-Control-Allow-Credentials true
</IfModule>

Так что он должен разрешать происхождение откуда угодно.Пока все хорошо.

Теперь, если я сделаю так, чтобы мои аксиозы вызвали отправляемые заголовки:

enter image description here

Похоже на это.

Теперь в заголовке ответа есть ДВА доступа-контроля-разрешения-происхождения, что, похоже, вызывает некоторые проблемы.

Я получаю ошибку:

Доступв XMLHttpRequest в «http://apidomain.test/api/previews/v1/preview/?id=726&_wpnonce=025ff5c5fa' от источника» http://localhost:3000' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: заголовок «Access-Control-Allow-Origin» содержитнесколько значений '*, http://localhost:3000',, но разрешено только одно.

Как это исправить?

- Как можно разрешить более одного значения (будетэто может быть плохо в любом случае) - Или как я могу предотвратить этот беспорядок с двумя значениями в первую очередь?

Имеет ли это отношение к отправляемым заголовкам axios (у меня когда-то была трассировка, где я думал, что настройказаголовок axios вместо добавления может помочь, но как-то это ни к чему не приведет).

(я ничего не делаюСпециально, просто: axios.get ('url', withCredentials: true, transformResponse: [некоторые преобразования ...]).

Пожалуйста, помогите мне здесь.

Приветствия и заранее спасибо.

J

1 Ответ

1 голос
/ 22 марта 2019

Как я могу разрешить более одного значения (это будет плохо в любом случае)

Вы не можете (браузеры просто не поддерживают его).

Или как я могу предотвратить этот беспорядок с двумя значениями в первую очередь?

Удалите один из двух битов кода, которые устанавливают заголовок.

Это один из них:

Header always set Access-Control-Allow-Origin: "*"

Где-то у вас есть код, который добавляет раздел http://localhost:3000.

Удалите одного из них.

Имеет ли это отношение к отправляемым заголовкам axios

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

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