Я не уверен, что это просто случай неправильной настройки в моем вызове ajax или мое непонимание того, как работает CORS.CORS и jQuery ajax call
У меня есть веб-сервер, работающий на моем ящике в сети - larryq.mycompany.com
. У меня есть полный доступ к этой машине и был установить следующие заголовки на своих страницах:
Access-Control-Allow-Origin = *
Access-Control-Allow-Headers = 'Authorization'
Access-Control-Allow-Credentials = true
Access-Control-Allow-Methods = "GET, POST, PUT, DELETE"
Когда я загружаю мою текущую страницу тестирования я вижу эти значения в моих заголовках ответа.
На этой странице я делаю AJAX вызов на другой сервер в сети, используя OAuth:
var OAuthAuthorizationString = 'OAuth realm="http://www.mycompany.com/", oauth_consumer_key="consumerkey"....oauth_nonce="1446691", oauth_version="1.0"'
$.ajax
({
type: 'GET',
url: 'https://secure.mycompany.com?val1=33&val2=45',
data: [],
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'OAuthAuthorizationString');
}
})
.done(function (html) {
$("#results").empty();
$("#results").append(html);
})
.fail(function (jqXHR, textStatus) {
$("#results").empty();
$("#results").append(textStatus);
});
Прямо сейчас, когда я запускаю это я получаю 403 Forbidden ответ во время того, что, как представляется, CORS предполетная проверка.
Если я открываю клиент расширенного клиента Google и обрабатываю тот же запрос GET, используя эту строку OAuth в заголовке авторизации, запрос работает, и я возвращаю свои данные.
Должно быть, я что-то делаю неправильно, но не могу понять, что? Я сталкиваюсь с каким-то ограничением ajax, о котором я не знаю или (вполне вероятно) неправильно настроил ситуацию?
Я использую jQuery 1.10 fwiw.
Игнорирование клиента Google на мгновение, вы установили заголовки управления доступом на один сервер, но вы делаете запросы на другой сервер? Чего вы ожидаете? –
403 Запрещено = проблема на стороне сервера. Сделали ли вы файл w, r, r? (chmod 755) – Faron
@MikeW Я слышал, что вы говорите. Я думал то же самое, пока не заработал клиент Google, а затем сказал: «Знаю ли я CORS и его ограничения? Не совсем? Тогда давайте попробуем это ...», после чего прошло 3 часа головокружения и, возможно, это будет – larryq