2009-04-30 46 views
1

如果无论如何都允许两个自己的域之间没有代理黑客的AJAX,JSONP,Flash或浏览器安全性的变化?也许SSL或什么?AJAX跨站点脚本在自己的域之间

+2

我还挺希望没有。 – 2009-04-30 20:02:26

+0

浏览器应该如何知道你的“自己的”域和恶意软件站点之间的区别? – 2009-04-30 20:10:41

+0

我可以将任何东西放到自己的域上的任何位置来告诉它。例如,Flash为此使用特殊文件crossdomain.xml。 – kingoleg 2009-04-30 20:22:09

回答

2

一个已签名的Java小程序也许可以做到,但这与Flash的原理相同,因此可能无法满足您的要求。

a specification for cross domain requests,但它仍处于发展阶段。

+0

是的,Java applet不是一个选择。 – kingoleg 2009-04-30 20:20:26

1

据我所知,您最好在这里创建一个服务器资源,您可以引导您的AJAX调用,将它们转发到另一个域上的第二台服务器,然后将结果传回给您的应用程序。

1

您可以尝试一种称为'Ajast'的技术。

基本上,您的域A上的JavaScript添加额外的<script>标签需要的页面。这些脚本标签指向域B上的javascript文件(它不需要是静态的.js),允许您从域B加载数据。

1

在几次我有类似的需要跨域工作我通过使用与嵌入页面相同颜色的嵌入式无边框iframe来避开它。这是一种古老的技术,它早于广泛的AJAX使用,并且由于'我们将使用AJAX'的思维方式而被忽视。然而,你可以用这种方法做很多事情,如果你真的被困住了,这可能就足够了。当然,你可以在嵌入式页面和主页面之间编写一些相当复杂的交互,这在一定程度上可以为启用AJAX的页面提供类似的用户体验。

一个显而易见的想法确实发生了,但我从未尝试过 - 是否有可能为主页中的第二个域(即第一个域)嵌入iframe并从主页通信到第二个域通过嵌入式iframe?

0

是的,如果您使用的是Apache,那么有一个简单的方法。在Apache的httpd的-vhosts.conf文件更改设置(我使用的Apache 2.2)

<VirtualHost *:80> 
ServerAdmin [email protected] 
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> 

Cross site scripting with Apache