Вот в чем проблема:
1.) У нас есть страница здесь ... www.blah.com/mypage.html
2.) Эта страница запрашивает js-файл www.foo.com вот так ...
<script type = "text/javascript" src = "http://www.foo.com/jsfile.js" />
3.) "jsfile.js" использует Prototype для отправки Ajax-запроса обратно на www.foo.com.
4.) Запрос ajax вызывает www.foo.com/blah.html. Функция обратного вызова получает ответ html и бросает его в div.
Хотя это, похоже, не работает, я думаю, это XSS. Это верно?
Если да, то как я могу решить эту проблему? Есть ли другой способ получить мой html с www.foo.com на www.blah.com на клиенте без использования iframe?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это XSS и это запрещено. Тебе действительно не следует так поступать.
Если вам действительно нужно, заставьте ваш код AJAX вызывать локальный код (PHP, ASP, что угодно) на blah.com и заставить его вести себя как клиент, получать все, что вам нужно, с foo.com и возвращать его обратно клиенту. Если вы используете PHP, вы можете сделать это с помощью fopen ('www.foo.com/blah.html', 'r'), а затем прочитать содержимое, как если бы это был обычный файл.
Конечно, в вашем php.ini необходимо включить allow_remote_url_fopen (или как он там называется).
Один из вариантов - реализовать прокси-страницу, которая принимает необходимый URL-адрес в качестве параметра. например http://blah.com/proxy?uri=http://foo.com/actualRequest
Вам лучше сделать небольшую проверку, чтобы убедиться, что URL-адрес является тем, который вы ожидаете ... в противном случае это серьезная дыра в безопасности.
Показанный выше метод может стать большой дырой в безопасности. Предложите вам проверить имя сайта по белому списку и создать фактический URI, проксируемый на стороне сервера.
Существует предложение w3c, позволяющий сайтам указывать другие сайты, которым разрешено делать межсайтовые запросы к ним. (Википедия может разрешить все запросы статей, скажем, но почта Google не хочет разрешать запросы - поскольку это может позволить открывать любой веб-сайт, когда вы вошли в почту Google, чтобы читать свою почту).
Это может быть доступно в какой-то момент в будущем.
Текущее предложение W3C называется «Совместное использование ресурсов между источниками», широко известное как CORS.
Для междоменных совпадений это хороший рабочий пример, и теперь он считается "стандартным" http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html.
есть и другие способы, например, для вставки фреймов с измененным доменом документа
Я все еще согласен с тем, что простой способ - это вызвать прокси в том же домене, но тогда это не настоящий вызов WS на стороне клиента.
JSONP был частично разработан для решения возникшей у вас проблемы.
http://ajaxian.com/archives/jsonp-json-with-padding
JQuery имеет это в своем методе $ .getJSON
Как упоминалось выше, JSONP - это способ обойти это. Однако сайт, с которого вы запрашиваете данные, должен поддерживать JSONP, чтобы вы могли использовать его на клиенте. (JSONP по сути вставляет тег скрипта на страницу и предоставляет функцию обратного вызова, которую следует вызывать с результатами)
Если сайт, на который вы делаете запрос, не поддерживает JSONP, вам придется проксировать запрос на своем сервере. Как упоминалось выше, вы можете сделать это на своем собственном сервере, или то, что я делал в прошлом, - это использовать http://www.jsonpit.com, который будет проксировать запрос за вас.
Есть действительно хорошая статья о междоменном запросе ajax - tek-insight.blogspot.com/2010/05/…