来自js文件的跨域Ajax请求

Chr*_*lli 10 html javascript ajax

这是问题所在:

1.)我们在这里有页面... www.blah.com/mypage.html

2.)那个页面请求像这样的js文件www.foo.com ......

<script type="text/javascript" src="http://www.foo.com/jsfile.js" />
Run Code Online (Sandbox Code Playgroud)

3.)"jsfile.js"使用Prototype将Ajax请求发回www.foo.com.

4.)ajax请求调用www.foo.com/blah.html.回调函数获取html响应并将其抛出到div中.

这似乎不起作用,我想这是XSS.那是对的吗?

如果是这样,我该如何解决这个问题呢?有没有其他方法可以在不使用iframe的情况下将我的html从www.foo.com上传到www.blah.com客户端?

Mil*_*kov 14

它是XSS,是禁止的.你真的不应该那样做.

如果你真的需要,让你的AJAX代码调用blah.com上的本地代码(PHP,ASP,无论如何),使其表现得像客户端,并从foo.com获取你需要的任何内容并将其返回给客户端.如果您使用PHP,则可以使用fopen('www.foo.com/blah.html','r')执行此操作,然后将内容读取为常规文件.

当然,需要在php.ini中启用allow_remote_url_fopen(或其他任何名称).


tat*_*ght 6

有一个w3c建议允许站点指定允许对其进行跨站点查询的其他站点.(例如,维基百科可能希望允许所有文章请求,但谷歌邮件不希望允许请求 - 因为这可能允许任何网站在您登录谷歌邮件时打开以阅读您的邮件).

这可能在将来的某个时候可用.

  • 目前的W3C提案被称为["跨域资源共享"](http://www.w3.org/TR/cors/),俗称**`CORS`**. (3认同)