首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在IE8/9中使用Backbone发起CORS请求

在IE8/9中使用Backbone发起CORS请求
EN

Stack Overflow用户
提问于 2013-01-19 04:05:06
回答 2查看 2.8K关注 0票数 2

我正在写一个主干应用程序,它将存在于app.ourdomain.com/store上。

我想访问api.ourdomain.com/ourApi上的数据,使用已经内置到API中的HTTP身份验证。

现在,据我所知,响应中需要一个CORS头Access-Control-Allow-Origin: *来支持这种跨域支持。

但是,这在IE8/9中不起作用。我在其他地方读到过,我可以简单地添加$.support.cors = true;,这将神奇地开始在IE8/9上工作。

在我深入这个项目之前,我希望有实际经验的人能回答这个问题:

如果我们编写API来处理飞行前选项请求,允许跨源请求,并将此覆盖添加到$.support对象,那么我们是否会获得对所有HTTP谓词(包括PUT/DELETE)的完全访问权限,身份验证的能力,并在IE8/9中包含自定义头(就像我们在所有使用XMLHttpRequest的现代浏览器中所做的那样)?

This article描述了IE8/9用于这类请求的XDomainRequest对象的限制/限制。我特别关注#3和#5,这说明:

代码语言:javascript
运行
复制
#3: No custom headers may be added to the request

我们使用自定义标头来指示发出请求的CustomerID

代码语言:javascript
运行
复制
#5: No authentication or cookies will be sent with the request

我们使用HTTP Authentication对初始请求的用户进行身份验证,并在后续请求中使用在原始请求期间返回的access_token。

既然现在强制支持IE8/9,这是不是意味着我不能使用Backbone向我们系统上的不同子域请求数据,而不做一些愚蠢的事情,比如在subdomainA上创建一个代理API来访问subdomainB上的数据?

干杯。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-19 04:47:34

你的评估听起来是对的。不幸的是,在IE8/9中使用CORS时,没有针对自定义标头、附加方法或cookies的变通方法(IE10应该完全支持这些)。

代理服务器是一种选择。另一种选择是在远程域上托管一个html页面,将此HTML页面包含在调用页面上的iframe中,然后使用window.postMessage在iframe和调用页面之间进行对话。由于iframed页面与API在同一个域中,因此它可以使用XHR发出同源请求,然后使用window.postMessage将数据传递给调用页面。

这种"iframe代理“机制仍然需要在subdomainB上进行一些黑客攻击,特别是为了托管iframed页面。然而,它可能仍然比成熟的代理服务器更好,因为它是一个纯粹的基于HTML/JavaScript的解决方案。请注意,IE8/9仍然具有带有postMessagesome restrictions (尽管它们似乎不影响iframe)。你可以在这里找到这个"iframe代理“机制的描述:

  • http://softwareas.com/cross-domain-communication-with-iframes
  • http://ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/
票数 3
EN

Stack Overflow用户

发布于 2013-05-17 00:59:25

看起来这个问题已经得到了回答,但是偶然遇到了这个问题,我想我会为将来遇到这个问题的人添加这个。

总之,我遇到了这个问题,并编写了一个库,作为Backbone同步的临时替代品,它使用XDomainRequest对象在IE7/8/9中启用CORS。

https://github.com/victorquinn/Backbone.CrossDomain

有了它,你应该能够在Backbone.js之后立即包含它,做你的跨域请求,这些来自IE的请求应该可以工作,而不需要修改任何剩余的代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14406793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档