从CORS的角度来看,是否可以为多个前端提供单个基于Cookie的API?

时间:2015-06-25 00:25:11

标签: angularjs api cookies cors

我最初编写了一个REST API来处理以前编写的移动应用程序。移动程序员要求我在登录时生成auth_token,他将在每个需要身份验证的请求上作为标头传递。此API在api.example.com运行。

稍后,我被委托编写一个与此API通信的AngularJS应用程序,因此我必须在后端使用Access-Control-Allow标头,以使OPTIONS请求与CORS兼容CORS,以便我的浏览器允许连接(看起来像iOS不寻找这个标题)。此应用运行在one.example.com

现在,我必须编写第二个将在two.example.com运行的AngularJS应用程序,并计划在不久的将来three.example.com进行第三次。

我的问题是我的Access-Control-Allow-Origin标题如下所示:

Access-Control-Allow-Origin: http://one.example.com:80

*是不允许的,我也无法将此标头设置为多个来源。所以据我所知,我有两个解决方案:

  1. 与当前token-based版本并行实施cookie-based身份验证。我正在考虑this。这当然需要一些时间我愿意保存。

  2. 向请求者发送标头或参数,以识别OPTIONS请求和服务器端的应用程序的API端点,并相应地生成CORS标头。我甚至都不知道它是否可能,即使这样看起来也很讨厌。

  3. 有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

如果它们具有相同的来源,例如相同的域(example.com)或相同的子域(1.ex.example.com和2.ex.example.com),则它们可以共享相同的cookie。因为cookie基于域本身。