Межсайтовый скриптинг AJAX между собственными доменами
-
03-07-2019 - |
Вопрос
Разрешается ли AJAX между двумя собственными доменами без взлома прокси, JSONP, Flash или изменений безопасности браузера?Может быть, SSL или что-то в этом роде?
Решение
Подписанный Java-апплет может это сделать, но это тот же принцип, что и Flash, поэтому, вероятно, он не будет соответствовать вашим требованиям.
Есть спецификация для междоменных запросов, но он все еще находится на стадии разработки.
Другие советы
Насколько я знаю, лучше всего создать серверный ресурс, на который вы сможете направлять свои вызовы AJAX, который будет перенаправлять их на второй сервер в другом домене, а затем туннелировать результаты обратно в ваше приложение.
Вы можете попробовать технику, известную как 'Аяст'.
По сути, ваш javascript в домене A добавляет дополнительные <script>
теги по мере необходимости на странице.Эти теги скриптов указывают на файлы javascript в домене B (которые не обязательно должны быть статическими .js), что позволяет загружать данные из домена B.
В нескольких случаях, когда у меня возникала подобная необходимость работать в междоменном режиме, я обошел ее, используя встроенный iframe без полей того же цвета, что и страница встраивания.Это старый метод, появившийся еще до широкого использования AJAX, и в наши дни его часто упускают из виду из-за мышления «мы будем использовать AJAX».Однако с помощью этого подхода вы можете сделать довольно много, и этого может быть достаточно, если вы действительно застряли.Конечно, вы можете запрограммировать некоторые довольно сложные взаимодействия между встроенной и главной страницами, которые могут в некоторой степени обеспечить взаимодействие с пользователем, аналогичное странице с поддержкой AJAX.
Однако возникает одна очевидная мысль, которую я никогда не пробовал: можно ли встроить iframe для второго домена внутри главной страницы (т.первый домен) и общаться с главной страницы на второй домен через встроенный iframe?
Просто используйте easyXDM, он позволяет легко обмениваться документами из разных доменов.Взгляните на один из примеров, http://consumer.easyxdm.net/current/example/methods.html
Да, если вы используете Apache, есть простой способ.Измените настройки в файле httpd-vhosts.conf вашего Apache (я использую Apache 2.2).
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.com
DocumentRoot “C:/apache-tomcat-6.0.29/webapps/myApplication”
ServerName skill-guru.com
ErrorLog “logs/skg1-error.log”
CustomLog “logs/skg1-access.log” common
Header set Access-Control-Allow-Origin “*”
<Directory “C:/apache-tomcat-6.0.29/webapps/myApplication”>
Options -Indexes FollowSymLinks
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory>
JkUnmount /*.jsp ajp13
</VirtualHost>