我正在编写一个将在 app.ourdomain.com/store 上运行的主干应用程序。
我想使用我们 API 中已经内置的 HTTP 身份验证访问 api.ourdomain.com/ourApi 上的数据。
现在,据我了解,Access-Control-Allow-Origin: *
响应中需要一个 CORS 标头 ,以允许这种跨域支持。
但是,这在 IE8/9 中不起作用。我已经阅读了 SO 和其他地方,我可以简单地添加$.support.cors = true;
,这将神奇地开始在 IE8/9 上工作。
在我深入这个项目之前,我希望有实践经验的人可以回答这个问题:
如果我们编写我们的 API 来处理飞行前的 OPTIONS 请求,允许跨域请求,将这个覆盖添加到$.support
对象中,那么我们将获得对所有 HTTP 动词(包括 PUT/DELETE)的完全访问权限,以及身份验证的能力,并在 IE8/9 中包含自定义标头(就像我们在所有使用 XMLHttpRequest 的现代浏览器中所做的那样)?
本文XDomainRequest
描述了IE8/9 用于此类请求的对象的限制/限制。我特别关心#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 上的数据?
干杯。