Ответ 1
Прежде всего, http://example.com
и https://example.com
имеют различное происхождение. Для XHR Level 1 это означает, что запросы с кросс-началом не допускаются.
Но для текущего XHR (уровень 2), который поддерживает запросы с кросс-началом, когда CORS поддерживается (как сервером, так и клиентом!), запрос перекрестного происхождения может быть
-
a простой запрос cross-orgin, если
- метод запроса
GET
,HEAD
илиPOST
и - ни одно из полей заголовка запроса не отличается от
Accept
,Accept-Language
,Content-Language
илиContent-Type
и - флаг предполета не установлен
или
- метод запроса
-
a запрос перекрестного происхождения, для которого требуется предполетная версия, в противном случае.
Для простых запросов перекрестного происхождения браузер может отправить запрос. Но когда ответ получен, ему необходимо проверить, разрешает ли сервер предоставлять ресурс. Здесь проверяется поле заголовка Access-Control-Allow-Origin
и другие поля заголовка ответа Access-Control-*
. И только если эта проверка передана, браузер позволяет script читать ответ.
Для других запросов с перекрестным происхождением требуется предварительный предлог для согласования с сервером, какая информация разрешена для отправки в реальном запросе. Этот запрос перед полетом в основном представляет собой запрос OPTIONS
, указывающий серверу, что будет содержать фактический запрос (метод запроса и поля заголовка). Тогда сервер может решить, разрешает ли он такой запрос или нет.
В вашем случае наблюдаемое поведение может иметь несколько причин. Я предполагаю, что ваш send_sms script просто не поддерживает часть на стороне сервера для CORS.