JS same-origin-policy в WebKit: данные есть, но как получить к ним доступ? - PullRequest
0 голосов
/ 11 февраля 2011

Я занимаюсь разработкой мобильного приложения и стараюсь выполнять большинство частей в HTML / CSS / JS, встроенных в WebView. Приложению необходимо получать данные из XML-веб-службы, в то время как HTML / CSS / JS-код должен находиться в локальной файловой системе. Однако это приводит меня к вопросу "same-origin-policy" для Ajax-вызовов, потому что WebKit устанавливает для Origin значение null для локальных файлов. Однако я заметил, что при установке dataType в значение «jsonp» вместо «xml» в параметрах $ .ajax, вызов в Chrome будет неудачным (parserError), но я вижу данные, возвращаемые из веб-службы в отладчике. У меня вопрос: возможно ли как-то переопределить обратные вызовы по умолчанию, которые вызываются при получении данных ответа? Если нет, что еще я могу сделать? У меня нет доступа к серверу, на котором запущен веб-сервис. В других обсуждениях этой проблемы я читал, что выполняется запрос при загрузке страницы, а не как вызов Ajax. Однако мне не ясно, что это значит / как это должно быть сделано. Я ценю любое освещение на этом!

1 Ответ

0 голосов
/ 11 февраля 2011

JSONP - это JSON с Padding, он загружает URL (только GET) как тег <script> и предполагает, что ответ JSONP содержит вызов функции с фактическим JSON в качестве первого аргумента.

Большинство удаленных веб-сервисов, таких как Twitter, поддерживают параметр GET 'callback ='. Например:

GET /my/jsonp/?callback=myFunction

И ответом должен быть файл 'JavaScript' с содержимым.

myFunction({"code": 200, "status": "OK"});

Это JSONP.

...