У нас есть сервер NodeJS / Express, который загружает игру HTML5, которую мы храним на сервисе вне нашего сервера (например, Amazon S3). Игра должна взаимодействовать с нашим сервером статистики по-прежнему на нашем сервере NodeJS / Express, но поскольку он находится в другом домене, чем запущенная игра, мы столкнулись с проблемами CORS. Мы исправили это, используя модуль Node cors и сделав это с помощью нашего маршрута:
router.put("/stats/", cors(), async (req, res) => {
...
Все в порядке, но мы только что узнали, если вы посетите наш веб-сайт БЕЗ www prefix это все еще дает проблему CORS. Как если бы вы пришли к нам по номеру www.example.com, все работает, игра загружается и может возвращать статистику. Но если вы посетите нас на example.com, игра все равно загрузится, но выдает следующую ошибку:
Access to XMLHttpRequest at 'https://www.example.com/api/stats/' from origin 'https://example.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Насколько я понимаю, как мы используем пакет cors, он должен включать все запросы cors на этот маршрут. Так почему он блокирует это?