Проблема Access-Control-Allow-Origin в BulkSMS - PullRequest
0 голосов
/ 26 июня 2018

Я использую Angular 5 для отправки пост-запроса на отправку SMS через Bulksms: http://bulksms.com/

При выполнении запроса от Angular (клиента) я сталкиваюсь с этой проблемой:

Origin http://TTTT:4200 не разрешено Access-Control-Allow-Origin.

Как я могу исправить эту проблему в BulkSMS?

С уважением,

1 Ответ

0 голосов
/ 26 июня 2018

Политика вашего браузера того же происхождения запрещает вашему коду Javascript доступ к третьей стороне (например, api.bulksms.com ) так, как вы надеялись это сделать, и CORS ( Cross-Origin Resource Sharing), который является механизмом для ослабления этих ограничений, недостаточно ослаблен, чтобы разрешать эти запросы (от вас, как от ненадежной третьей стороны).

Википедия Политика одного и того же происхождения : "В соответствии с политикой [того же происхождения] веб-браузер разрешает сценариям, содержащимся на первой веб-странице, доступ к данным на второй веб-странице, но только если оба веб-сайта страницы имеют одинаковое происхождение. Источник определяется как комбинация схемы URI, имени хоста и номера порта. Эта политика не позволяет вредоносному сценарию на одной странице получить доступ к конфиденциальным данным на другой веб-странице ". Страница Википедии содержит несколько хороших примеров использования вредоносного кода Javascript, который пытается ограничить политика того же происхождения.

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

Для целей разработки существуют некоторые инструменты, которые могут упростить вашу жизнь - например, вы можете использовать live-server для запуска простого HTTP-сервера, который обслуживает ваши статические файлы, а также использует его --proxy опция для направления запросов на api.bulksms.com и решения вашей проблемы с политикой того же происхождения в процессе.

Для производства типичным решением является маршрутизация ваших запросов AJAX, предназначенных для сторонней службы, через ваш собственный сервер (сервер, обслуживающий файлы Javascript в вашем браузере) или обратный прокси-сервер (который может как собственный, так и сторонний сервис). Если к вашему приложению относится сторона сервера, вы можете сделать HTTP-запросы к api.bulksms.com оттуда, используя HTTP-клиент, а затем сделать так, чтобы ваш код Javascript говорил с вашим собственным сервером, чтобы косвенно сделать запросы на bulksms.com. Это также дает вам возможность добавлять заголовки аутентификации на стороне вашего сервера, при этом ваш код Javascript никогда не должен их знать (например, если у вас одна учетная запись bulksms.com, и многие пользователи могут использовать эту учетную запись через ваше приложение Angular, но кто не должен знать свои полномочия). Точно так же вы можете наложить ограничения на то, что ваши пользователи Angular могут делать таким образом (например, ограничивать количество SMS-сообщений, которые они могут отправлять в день).

...