Я занимаюсь разработкой веб-приложения реагирования, которое связывается с бэкэндом DRF через axios.При локальном развитии я обрабатывал CORS, устанавливая django-cors-headers и добавляя localhost: 3000 в CORS_ORIGIN_WHITELIST (3000 - порт по умолчанию для реагирования с create-реагировать-app):
CORS_ORIGIN_WHITELIST = (
'localhost:3000',
)
Это работало нормальнопока я не развернулся на удаленном сервере, когда я внезапно начал снова видеть ошибки CORS:
Access to XMLHttpRequest at 'http://localhost:8000/api/path/' from
origin 'http://example.com:3000' has been blocked by CORS policy...
, что меня сбивало с толку, поскольку это уже работало, когда я разрабатывал локально.
Это имелоя был в тупике несколько часов, пока одно разочарование не заставило меня изменить запрос на реакцию с
axios.post(localhost:8000/api/path/, {
key1: val1,
key2: val2,
...
})
.then(response => {
doSomeStuff(response);
});
на
axios.post(example.com:8000/api/path/, {
key1: val1,
key2: val2,
...
})
.then(response => {
doSomeStuff(response);
});
и белый список с
CORS_ORIGIN_WHITELIST = (
'localhost:3000',
)
на
CORS_ORIGIN_WHITELIST = (
'example.com:3000',
)
В этот момент ошибки CORS прекратились.
Мой вопрос: почему это произошло?Насколько я понимаю, localhost и example.com были двумя именами одного и того же сервера, но любая другая комбинация белого списка localhost / example.com и запроса localhost / example.com приводит к ошибке.В чем разница с точки зрения CORS?