Для записи, насколько я могу судить, у вас было две проблемы:
Вы не передавали спецификатор типа "jsonp" вашему $.get
, поэтомуиспользовал обычный XMLHttpRequest.Однако ваш браузер поддерживает CORS (Cross-Origin Resource Sharing), чтобы разрешить междоменный XMLHttpRequest, если сервер его подтвердил.Вот тут и появился заголовок Access-Control-Allow-Origin
.
Я полагаю, вы упомянули, что запускаете его из файла file: // URL.Есть два способа для заголовков CORS сигнализировать, что междоменный XHR в порядке.Одним из них является отправка Access-Control-Allow-Origin: *
(что, если вы достигли Flickr через $.get
, они должны были это сделать), в то время как другой должен был отразить содержимое заголовка Origin
.Тем не менее, file://
URL дают ноль Origin
, который не может быть авторизован через echo-back.
Первый был решен окольным путем предложением Дарина использовать $.getJSON
.Это немного волшебно, чтобы изменить тип запроса со своего значения по умолчанию "json" на "jsonp", если он видит подстроку callback=?
в URL.
Это решило вторую, больше не пытаясь выполнитьЗапрос CORS с file://
URL.
Чтобы прояснить это для других людей, вот простые инструкции по устранению неполадок:
- Если вы пытаетесь использовать JSONP, убедитесь, что один изВот случай:
- Вы используете
$.get
и установите dataType
на jsonp
. - Вы используете
$.getJSON
и включеныcallback=?
в URL.
- Если вы пытаетесь сделать междоменный запрос XMLHttpRequest через CORS ...
- Убедитесь, что вы тестируете через
http://
.Скрипты, запускаемые через file://
, имеют ограниченную поддержку CORS. - Убедитесь, что браузер действительно поддерживает CORS .(Opera и Internet Explorer опаздывают на вечеринку)