2017-02-10 12 views
1

Обновлено решение и история проблемыCORS с сервером Aurelia-CLI

Моя установка такова:

setup

я имел CORS понял неправильный путь вокруг, думая, что сервер HTTP должны обслуживать заголовки. Дело в том, что это сторонний API, который должен поставлять заголовки CORS.

В 3-й партии не отправляет заголовки CORS и fetch client ожидает тех, (чтобы обойти то же происхождение политики браузеров) сообщение об ошибке, как это выглядит:

Fetch API не может загрузить http://api.sl.se/api2/realtimedeparturesV4.json?key=b99d17e1714142ca90ed017aeead32fc&siteid=9001. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http://localhost:9000' поэтому не допускается.

Теперь есть возможность превратить CORS в клиенте выборки с {mode: 'no-cors'}, но это запрещает JavaScript (если только не ответ является простым текстом).

Решение, которое я выбрал, - это реализовать прокси-сервер на стороне сервера (для простоты: тот же домен, что и страница Aurelia), который затем вызывает стороннюю сторону. На стороне сервера нет ограничений CORS.

Лучшим решением будет то, что сторонняя сторона поддерживает CORS, но иногда это не вариант (т. Е. Сторонний участник).

+1

Nope. Это API, который должен отправлять заголовки CORS. – LStarky

+1

Если вы разместите более подробную информацию о настройке API, возможно, мы сможем помочь. Но это определенно не связано с Aurelia-CLI. – LStarky

+0

подробнее подробнее опубликовано – specimen

ответ

1

По умолчанию клиентом Aurelia Fetch является CORS, поэтому ваше приложение Aurelia должно окончательно получить от сторонних серверов. Ваши конечные точки API, а не сервер Aurelia Cli, вероятно, не отправляют правильные заголовки обратно в браузер (ваше приложение Aurelia) в предполетные запросы, необходимые для работы CORS. Какие заголовки, конечно, зависят от содержимого, которое вы пытаетесь отправить и получить от своих конечных точек.

+0

Я добавил код, включая URL-адрес для конечной точки API (открытая конечная точка). Мое понимание CORS заключается в том, что именно сервер служит для первоначального приложения Aurelia, которое предназначено для отправки заголовков (кому разрешено связаться с браузером), но я начинаю думать, что это неправильно. – specimen