Вы не можете делать аутентифицированные запросы к API Mailgun из внешнего кода JavaScript, запущенного в браузере. Mailgun API намеренно не поддерживает это, согласно собственной документации :
ПРИМЕЧАНИЕ. При использовании в браузере для связи с API Mailgun требуется прокси-сервер из-за ограничений cors. Кроме того, не публикуйте свой закрытый ключ API в коде внешнего интерфейса.
В частности, для запросов из внешнего кода JavaScript, выполняемого в браузерах, API Mailgun не разрешает заголовок запроса Authorization
. Вы можете проверить это с помощью curl
или таких:
$ curl -X OPTIONS -H "Origin: https://marquesslondon.com" \
-i https://api.mailgun.net/v3/marquesslondon.com/messages
HTTP/1.1 200 OK
Access-Control-Allow-Headers: Content-Type, x-requested-with
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 600
Allow: POST, OPTIONS
Обратите внимание, что значение заголовка ответа Access-Control-Allow-Headers
, которое возвращает конечная точка, не включает Authorization
. Это означает, что браузеры будут блокировать ваш JavaScript-код от отправки конечной точке API любого запроса, который содержит заголовок запроса Authorization
.
Что касается ваших изменений в файле .htaccess
для сайта http://marquesslondon.com
, то они не нужны и не имеют значения; это не имеет значения, какие заголовки CORS вы возвращаете с этого (вашего) сайта, потому что это просто сайт, инициирующий запрос - вы не отправляете никаких запросов на перекрестного происхождения.
Вместо этого важны заголовки CORS, возвращаемые сайтом, которым вы фактически отправляете запрос к кросс-источнику, то есть https://api.mailgun.net
. И, как объяснено выше, этот сайт возвращает заголовок ответа CORS Access-Control-Allow-Headers
, который говорит браузерам не разрешать запросы, содержащие заголовок Authorization
- и это приводит к тому, что вы видите поле заголовка запроса. Авторизация не разрешена сообщение об ошибке, цитируемое в вопросе.