Как вызвать api с локального хоста через https

В настоящее время я работаю в команде из двух человек, разрабатывающих веб-приложение. Я разрабатываю клиентское приложение, а мой партнер разрабатывает бэкэнд в отдельном проекте. Мой партнер загрузил свой проект в наш домен (https://api.example.com) и настаивает только на звонках к бэкэнду должен идти через https.

Разрабатывая клиентское приложение, я обслуживаю его через localhost. Проблема в том, что localhost по умолчанию обслуживается через http. Я не знаю, как вызвать бэкэнд через https.

Я разрабатываю свое клиентское приложение через интерфейс командной строки Angular 4. Я попытался обслужить свое приложение через https://localhost через самоподписанный сертификат, но при этом у меня возникают ужасные проблемы поскольку Chrome обнаруживает поддельный сертификат.

Так что я застрял. Как лучше всего позвонить на наш сервер разработки по https? Или есть другой способ сделать это? Должен ли партнер предоставить мне другую конечную точку api для разработки клиентского приложения? Как нам вместе работать над решением этой проблемы?


person Tyler Brown    schedule 27.08.2017    source источник
comment
Можете ли вы подключиться к конечной точке API, используя что-нибудь еще, например cURL? Если вы хотите сделать запрос GET из кода на стороне клиента, я не понимаю, почему ваш сервер разработки должен быть https. Просто используйте полный адрес API в коде на стороне клиента, и он должен работать.   -  person Mortz    schedule 27.08.2017
comment
Сервер принимает звонки только по https. Когда я вызываю сервер: api.example.com/api/auth, Chrome отвечает двумя Сообщения. Первая - это ошибка CORS, в которой говорится, что в запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Второй - 401 неавторизованный с сервера. Должен ли мой партнер изменить настройки сервера, чтобы сервер принимал эти запросы? Как это повлияет на безопасность?   -  person Tyler Brown    schedule 27.08.2017
comment
Таким образом, единственный способ выполнить звонок - это обслуживать клиентское приложение с https. Это правильный способ сделать это? Если да, то как мне убедить браузер, что мой сертификат действителен?   -  person Tyler Brown    schedule 27.08.2017
comment
да. Ошибка CORS на стороне вашего сервера. Вам необходимо разрешить серверу принимать запросы от других сайтов, в данном случае от вашего сервера разработки.   -  person Mortz    schedule 27.08.2017
comment
Итак, будет ли сервер разработки localhost: 4200? Или мне действительно стоит купить сервер разработки, на котором находится сайт, например dev.example.com?   -  person Tyler Brown    schedule 27.08.2017
comment
Нет, вы можете продолжить работу с localhost:4200 в качестве сервера разработки. Просто включите CORS на стороне сервера, используйте https://api.example.com в коде на стороне клиента, и он должен работать. AFAIK, ваша проблема связана с доступом к серверу с внешнего клиента, а не с https   -  person Mortz    schedule 27.08.2017
comment
вы можете попробовать ng serve --ssl он создаст собственный сертификат   -  person Yevheniy Potupa    schedule 22.03.2019


Ответы (2)


Нет, вы можете продолжить работу с localhost:4200 в качестве сервера разработки. Просто включите CORS на стороне сервера, используйте https://api.example.com в коде на стороне клиента, и он должен работать. AFAIK, ваша проблема связана с доступом к серверу с внешнего клиента, а не с https

person Mortz    schedule 28.08.2017
comment
Да, это лучший вариант. Я поговорил со своим серверным разработчиком, и он наконец-то включил его. Головная боль на данный момент снята. Таким образом, решение состоит в том, чтобы серверный проект разрешал CORS, но вы все равно можете выполнять вызовы API через https. Это просто означает, что мне не нужно размещать свое клиентское приложение через https. - person Tyler Brown; 30.08.2017

если вы запускаете проект в Chrome, существует расширение под названием РАЗРЕШИТЬ ПЕРЕКРЕСТНОЕ ПРОИСХОЖДЕНИЕ, загрузите это расширение и вызовите Back-end API.

person Ashokkumar Ramasamy    schedule 28.08.2017
comment
Это хитрость, и она работает редко. Это хороший вариант, но правда в том, что мне пришлось поговорить с серверным разработчиком, который открывал звонки от клиентов по http. уф - person Tyler Brown; 30.08.2017