如果在没有代理黑客、JSONP、Flash 或浏览器安全更改的情况下允许两个自己的域之间的 AJAX?也许是 SSL 之类的?
6 回答
一个签名的 Java 小程序也许可以做到这一点,但这与 Flash 的原理相同,因此可能无法满足您的要求。
跨域请求有一个规范,但仍处于开发阶段。
据我所知,您最好的选择是创建一个服务器资源,您可以将 AJAX 调用定向到该服务器资源,该资源会将它们转发到不同域上的第二台服务器,然后将结果通过隧道返回到您的应用程序。
您可以尝试一种称为'Ajast'的技术。
<script>
基本上,您在域 A 上的 javascript 会根据需要向页面添加额外的标签。这些脚本标签指向域 B 上的 javascript 文件(不必是静态 .js),允许您从域 B 加载数据。
在我有类似的跨域工作需要的情况下,我通过使用与嵌入页面颜色相同的嵌入式无边框 iframe 来回避它。这是一种古老的技术,早于 AJAX 的广泛使用,现在由于“我们将使用 AJAX”的心态而经常被忽视。然而,你可以用这种方法做很多事情,如果你真的被卡住了,它可能就足够了。当然,您可以在嵌入页面和主页面之间编写一些相当复杂的交互,这在某种程度上可以提供与启用 AJAX 的页面类似的用户体验。
虽然确实发生了一个明显的想法,但我从未尝试过 - 是否可以在主页(即第一个域)内嵌入第二个域的 iframe,并通过嵌入的 iframe 从主页与第二个域进行通信?
只需使用easyXDM,它就可以轻松地在不同域的文档之间进行通信。看看其中一个例子,http://consumer.easyxdm.net/current/example/methods.html
是的,如果您使用的是 Apache,那么有一个简单的方法。更改 apache 的 httpd-vhosts.conf 文件中的设置(我使用的是 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>