【发布时间】:2013-05-17 00:59:24
【问题描述】:
我正在编写一个将在 app.ourdomain.com/store 上运行的主干应用程序。
我想使用我们 API 中已内置的 HTTP 身份验证访问 api.ourdomain.com/ourApi 上的数据。
现在,据我了解,响应中需要一个 CORS 标头 Access-Control-Allow-Origin: * 以允许跨域支持。
但是,这在 IE8/9 中不起作用。我在 SO 和其他地方读过,我可以简单地添加 $.support.cors = true;,这将神奇地开始在 IE8/9 上运行。
在我深入这个项目之前,我希望有实践经验的人能回答这个问题:
如果我们编写 API 来处理 pre-flight OPTIONS 请求,允许跨域请求,将此覆盖添加到 $.support 对象,我们将获得对所有 HTTP 动词的完全访问权限(包括 PUT/DELETE )、在 IE8/9 中进行身份验证和包含自定义标头的能力(就像我们在所有使用 XMLHttpRequest 的现代浏览器中所做的那样)?
This article 描述了 IE8/9 用于此类请求的 XDomainRequest 对象的限制/限制。我特别关心 #3 和 #5 哪个状态:
#3: No custom headers may be added to the request
我们使用自定义标头来指示发出请求的 CustomerID
#5: No authentication or cookies will be sent with the request
我们在初始请求中使用 HTTP 身份验证对用户进行身份验证,并在后续请求中使用原始请求期间返回的 access_token。
由于现在强制要求 IE8/9 支持,这是否意味着我不能使用 Backbone 向我们系统上的不同子域请求数据,而不做一些愚蠢的事情,比如在 subdomainA 上创建代理 API 来访问 subdomainB 上的数据?
干杯。
【问题讨论】:
标签: backbone.js asp.net-web-api cors