Я пытаюсь получить доступ к веб-сервису с помощью Prototype/AJAX и запутался в ошибке, которую я не могу понять: кажется, что когда я делаю запрос на сервер, мой запрос интерпретируется как ОПЦИИ, а не GET (и, в свою очередь, выдает ошибку 501 - не реализована, поскольку сервер разрешает только запросы GET, исходя из того, что я понимаю из Access-Control-Request-Method:
). Я что-то пропустил в своей формулировке AJAX/request, которая может вызвать эту ошибку? Я читал немного в запросах CORS/preflighted здесь, но я не уверен, как это можно применить, когда мой код выглядит совместимым...
Здесь соответствующий запрос AJAX:
function fetchMetar() {
var station_id = $("station_input").value;
new Ajax.Request(REQUEST_ADDRESS, {
method: "get",
parameters: {stationString: station_id},
onSuccess: displayMetar,
onFailure: function() {
$("errors").update("an error occurred");
}
});
}
и здесь ошибка и соответствующая информация запроса, которую я получаю из Chrome:
Request URL:http://weather.aero/dataserver_current/httpparam?
dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3
&mostRecent=true&stationString=&stationString=KSBA
Request Method:OPTIONS
Status Code:501 Not Implemented
Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, x-prototype-version, x-requested-with, accept
Access-Control-Request-Method:GET
Connection:keep-alive
Host:weather.aero
Origin:http://domain.com
Referer:http://domain.com/.../...html
Что я могу здесь пропустить? Почему Chrome говорит, что запрос отправляется как ОПЦИИ, а не GET? Когда Chrome выдает информацию Access-Control-Request-Headers:
, являются ли они исключительно единственными заголовками, разрешенными в запросе?
Спасибо!