跨域脚本javascript请求
Cross domain scripting javascript request
我正在开发一个ASP.NET MVC应用程序,该应用程序包括一个托管所有JavaScript、CSS和图像的网站,然后是使用该网站上托管的资源的主web应用程序。
假设资源url是resources.example.com,web应用程序url是webapp.example.com
其中一个JavaScript文件IE9.js(http://code.google.com/p/ie7-js/)为了工作,向CSS文件(resources.example.com/styles.CSS)发出请求,但由于请求是向另一个域发出的,因此会被阻止,这是因为同源策略(http://en.wikipedia.org/wiki/Same_origin_policy)。
我想我已经找到了解决这个问题的方法,使用resources.example.com网站的Access Control Allow Origin标头。我对此的理解是,这将允许向resources.example.com网站提出任何请求,前提是这些请求在标题中。
为了尝试这一点,我在网站的web.config中添加了标题,如下所示:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
</customHeaders>
</httpProtocol>
我原以为这会允许任何请求运行权限,但当我通过IE9.js到达发出请求的点时,它在请求CSS文件resources.example.com/styles.CSS.时仍然会遇到PermissionDenied错误
CSS必须托管在另一个域上,IE9.js需要能够请求它。我相信答案是与这些HTTP头有关,但我可能误解了如何使用它们。
如对这个问题有任何见解,我们将不胜感激。顺便说一句,我应该补充一下,javascript文件是从谷歌代码网站链接到的:
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
在条件注释中,这只是IE中的一个问题。任何解决方案都必须在IE7+中工作。
更新:
我已经成功地使用IE的XDomainRequest对象向CSS发出了请求。我现在得到的内容是gzip,所以我只需要解码它,我就应该离开了。我会发布一个完整的更新和答案,当我有它的工作。
更新:
除此之外,XDomainRequest对象似乎不支持修改Accept-Encoding标头,这意味着响应似乎总是以编码的方式返回,对此进行解码会减慢页面加载速度,感觉不太对劲。此外,XDomainRequest对象在IE7中似乎不受支持,IE7是必需的受支持浏览器。
我唯一能想到的另一件事是设置一个处理程序,IE9.js可以调用该处理程序,该处理程序将位于同一域上,并加载所需文件的内容。这感觉也不太好,但这是我目前唯一能想到的其他解决方案。欢迎任何其他建议。
解决此问题的另一种方法是在IIS前面放置反向代理(如Nginx)。
然后将locationproxy_pass添加到webapp.domain.com和resources.domain.com。这样,它默认为webapp.domain.com,但如果您使用webapp.domain.com/resources,它会转到resources.domain.com.
通过这种方式,客户端只要求一个来源,因此需要跨站点脚本。
在本地测试时,这个技巧也非常方便。
只是个主意。。。
为了解决这个问题,我修改了IE9.js文件,该文件请求调用主MVC web应用程序中的处理程序。然后,这个处理程序可以向IE9.js所需的资源发出请求,因此它不需要直接向资源站点发出请求。
在问题中概述的情况下,我无法找到另一个解决问题的方法。
- Facebook邀请好友请求javascript
- '$'未定义Jquery ajax请求-javascript导入
- 为什么Chrome似乎异步请求Javascript文件
- 基本的 AJAX 请求 Javascript/PHP 不起作用
- 请求Javascript/Angular遇到异步问题
- 为什么在浏览器请求javascript文件时请求Accept:*/*
- 是否可以在ajax请求(JavaScript)中使用File类(Java)
- 代码隐藏中的Cant请求javascript变量总是返回“”&”;
- ASP.NET潜在危险请求Javascript Regex
- 替代请求.javascript/jquery中的RawUrl
- 排队的函数调用请求javascript
- jQuery's请求Javascript函数
- 从CDN和本地请求javascript时不同的头
- 如何尽可能隐藏AJAX请求(JavaScript代码)
- 递归HTTP请求javascript
- 上传pdf/doc等和发送数据到服务器的请求- Javascript
- 当从本地服务器请求javascript时,Rails得到CORS错误
- 是ASP的使用.网络请求.JavaScript中的QueryString是安全的
- 按特定顺序加载(请求)javascript
- 使用facebook批量请求javascript api