2016-11-19 2 views
2

Этот url находится в AWS API Gateway с методом get и stage, который хорошо развернут. И я включил CORS после aws document.Api Gateway не разрешает Access-Control-Allow-Origin

Вот мои шаги, чтобы включить CORS.

-Resource-> action-> включить CORS-> настройка по умолчанию -> включить CORS и заменить заголовки CORS. В результатах поиска CORS нет ошибок.

Я не профессиональный веб-разработчик, а мой браузер - сафари.
Вот мой код запроса "http://my.com"

function request(idex) { 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.onreadystatechange = function() { 
    if (xmlHttp.status == 200) 
     callback(xmlHttp.responseText); 
} 
xmlHttp.open("GET", "http://my.com", true); 
xmlHttp.send(null);} 

Консоль печати ошибка: XMLHttpRequest не может загрузить "http://my.com" Происхождение http://example.com не допускается Access-Control-Allow-Origin.

Если есть ошибки в javascript-запросе или в развертывании API-шлюза?

+2

Существует, конечно, что-то неправильно с тем, как вы создали CORS в AWS, потому что я создал example.com как vhost на своем локальном компьютере. И после этого я получаю: 'XMLHttpRequest не может загрузить http://my.com/. Перенаправление с «http://my.com/» на «https://my.com/» заблокировано политикой CORS: заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Происхождение «http://example.com», следовательно, не допускается. » – Pegues

+0

Большое спасибо, я думаю, что ваш комментарий поможет мне найти способ его решить. – Cenxui

+0

Мое удовольствие. Удачи! – Pegues

ответ

2

После консультации и пытается каждый метод, я нашел ошибку следующим образом.

Согласно документу AWS, мы не можем развернуть наш api, прежде чем включить CORS. Перед установкой необходимо установить все настройки заголовка и CORS. Но API-шлюз не блокирует этот параметр и не отображает диалоговое окно с ошибкой. API Gateway не изменит заголовок, даже если процесс настройки показывает успех.

+1

Это звучит как ошибка AWS. – Huaying

2

Проблема с кросс-происхождением от стороны сервера, а не стороны JavaScript. Когда сервер не разрешает запрос из других доменов, он выдает ошибку перекрестного происхождения. Но вы сказали, что уже добавили CORS в пример aws

Поскольку javascript только обращается к сервису с my.com, вам необходимо добавить правильное сопоставление доменов на своем сайте my.com, чтобы сообщить, что запрос будет поступать из другого домена, называемого example.com. Возможно, сервер настроен неправильно. или попробуйте, если сервер ожидает какой-либо заголовок.

попробовать, чтобы увидеть результат в любом отдыха клиента, как SoapUI, Rect клиента плагин в хром и т.д., как только вы убедитесь, что нет никаких проблем в сервере, попробуйте его из JavaScript

Чтобы проверить есть хром плагин вы можете попробовать

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

+0

Благодарим вас за полезный ответ, чтобы я многому научился! – Cenxui