2009-04-30 77 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