Межсайтовая проблема с JavaScript - PullRequest
0 голосов
/ 12 августа 2010

Я занимаюсь разработкой сервиса JavaScript API.Главная html-страница выглядит следующим образом:

<html>
<head>
  <script type="text/javascript" src="scripts/logic.js"></script>
  <script type="text/javascript" src="scripts/jquery-1..."></script>
  <script type="text/javascript" src="http://mydomain/api/main.js"></script>
</head>
...
</html>

В скрипте main.js я загружаю другой скрипт из mydomain.Я делаю это путем добавления тега script ([script .. src = "http://mydomain/api/getsomedata.js?callback_id=3434&someparams=..."]). Загруженный скрипт немедленно вызывает функцию обратного вызова API: MyApi.processCallback (...). Все работает нормально.

Но когда яя пытаюсь загрузить другой скрипт mydomain из локального файла (logic.js), я получаю очень странную ситуацию: все глобальные объекты скрипта не определены. Нет ни объекта MyApi, ни объекта jQuery $, которые были бы видны во время предыдущего вызова. Поэтому я могуВызов функции обратного вызова MyApi.

Возможно, это из-за ограничений безопасности. Anti-XSS или что-то подобное. Я пытался добавить заголовок X-XSS-Protection, как во всех API Google JavaScript. Но это было сделаноне помогает.

Я не использую IFRAMES.

Проблема может быть решена точно, поскольку многие межсайтовые API JavaScript работают (Google Maps API и т. д.) по одной и той же идее..

1 Ответ

0 голосов
/ 12 августа 2010

Что происходит в вашем сценарии?

Если вы выполняете Ajax-вызовы обратно в домен, ваш скрипт завершится с ошибкой безопасности Same Origin. Если вам нужно установить связь с вашим сервером из другого домена, вам нужно использовать JSONP . Если вы работаете только с современным браузером, вы можете получить CORS .

...