Проблема Access-Control-Allow-Origin в BulkSMS
Я использую Angular 5 для отправки почтового запроса на отправку SMS через Bulksms: http://bulksms.com/
При выполнении запроса от Angular (клиент) я сталкиваюсь с этой проблемой:
Источник http://TTTT:4200 не разрешен Access-Control-Allow-Origin.
Как я могу исправить эту проблему в BulkSMS?
С Уважением,
1 ответ
Политика вашего браузера, основанная на том же происхождении, запрещает вашему коду Javascript доступ к третьей стороне (например, api.bulksms.com) так, как вы надеялись это сделать, и CORS (Cross-Origin Resource Sharing), который механизм для ослабления этих ограничений недостаточно ослаблен, чтобы разрешать эти запросы (от вас, как от ненадежной третьей стороны).
Википедия Политика одного и того же происхождения: "В соответствии с политикой [того же происхождения] веб-браузер разрешает сценариям, содержащимся на первой веб-странице, доступ к данным на второй веб-странице, но только если обе веб-страницы имеют одинаковое происхождение. определяется как комбинация схемы URI, имени хоста и номера порта. Эта политика не позволяет вредоносному сценарию на одной странице получить доступ к конфиденциальным данным на другой веб-странице ". Страница Wikipedia содержит несколько хороших примеров видов вредоносного использования кода Javascript, который пытается ограничить та же политика происхождения.
Важно отметить, что эти ограничения применяются только браузерами: клиентский код HTTP, который не выполняется в браузере, обычно не заботится об этом.
Для целей разработки есть некоторые инструменты, которые могут облегчить вашу жизнь - например, вы можете использовать live-сервер для запуска простого HTTP-сервера, который обслуживает ваши статические файлы, а также использует его --proxy
возможность направить запросы на api.bulksms.com и решить вашу проблему политики того же происхождения в процессе.
Для производства типичным решением является маршрутизация ваших запросов AJAX, которые предназначены для сторонней службы, через ваш собственный сервер (тот, который передает ваши файлы Javascript в ваш браузер) или обратный прокси-сервер (который будет перенаправлять ваши собственные). и сторонний сервис). Если у вашего приложения есть серверная сторона, вы можете отправлять оттуда HTTP-запросы на api.bulksms.com, используя HTTP-клиент, а затем передавать свой код Javascript на свой собственный сервер, чтобы косвенно отправлять запросы на объемные сообщения. ком. Это также дает вам возможность добавлять заголовки аутентификации на стороне вашего сервера, при этом ваш код Javascript никогда не должен их знать (например, если у вас одна учетная запись bulksms.com, и многие пользователи могут использовать эту учетную запись через ваше приложение Angular, но кто не должен знать свои полномочия). Точно так же вы можете наложить ограничения на то, что ваши пользователи Angular могут делать таким образом (например, чтобы ограничить количество SMS-сообщений, которые они могут отправлять в день).