2011-08-11 104 views
3

我意识到跨站点脚本的这个问题已经被覆盖,但是对于web开发来说是新的,我还有一些问题。XMLHttpRequest跨站点脚本?

目前我正在测试我在我的PC上写入的HTML文件,该文件连接到另一台机器上的RESTFul Web服务。我得到status=0。这是否被认为是跨站点脚本?

如果一台服务器托管一个带有JavaScript的文件,并且该JavaScript文件有XMLHttpRequest秒到服务器自己的Web服务,那会工作,还是那么糟糕?

道歉,如果任何这些问题都很愚蠢。

+0

这不是一个愚蠢的问题。 ;-)几天前我也问过自己。 –

回答

0

不,这不是跨站点脚本。当从其他服务器包含脚本JS文件时,它将呈现在您的站点中,因此您将无法通过JS脚本最初所在的XMLHttpRequest站点进行访问。

如果这可能比任何主持jQuery文件的人都有可能,包括谷歌在内的许多服务器都会为XMLHttpRequests打开。

因此,这是不可能的。

如果你想从另一台服务器得到JSON响应,你可以使用pjson。谷歌它的更多信息。

和Cross Site Scripting是有人在您的网站上注入JavaScript代码以绕过访问控制。

1

status=0能为我提供各种各样的东西,而且不知道更多关于如何达到这一点的信息,要确定它到底意味着什么是非常困难的。您可能正在使用iframe,另一台计算机可能真的会告诉您状态为0 ...我们不知道。


一般的规则是,它并不重要,其中JS是,它将执行它的加载数据。这就是Google js归档api的可能性(你知道,在各种不同的地点使用https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js)。说实话,这不是一个安全问题。

当js文件尝试访问另一个域(甚至是子域)时(无论是通过处理iframe还是通过XMLHTTPRequest),都会出现安全问题。正是在这个时候,浏览器才会在脚本上“打下马脚”。

因为这个原因,从硬盘驱动器(file:///)到任何Internet协议(http | https)的JavaScript通信都会遇到困难。

0

您可以使用CORS。您可以使用现在使用的相同的代码,但是您通过ajax请求页面的另一台服务器必须在该页面上发送以下标题:

Access-Control-Allow-Origin: http://yoursite.example.com 
#or to allow all hosts 
Access-Control-Allow-Origin: *