CORS - 服务器如何知道Jquery ajax" withCredentials:true"用过吗?

时间:2016-05-02 21:47:51

标签: javascript jquery ajax cors

我在框架中实现了CORS(跨域资源共享)。

我知道当使用Jquery的ajax(...)发出XMLHttpRequest请求而withCredentials属性为true时,服务器必须回复这两件事:

  • Access-Control-Allow-Credentials: true
  • Access-Control-Allow-Origin:[THE_DOMAIN]

服务器无法使用通配符Access-Control-Allow-Origin:*进行回复:doesn't work

我的问题:我如何在服务器上知道withCredentials: true已被使用,所以我不使用通配符?

我比较了使用withCredentials: false时和使用withCredentials: true时发送的标头,它们是相同的!

因此,如果我确实想在客户端请求时允许凭据,这是否意味着我无法 ,使用Access-Control-Allow-Origin:*

1 个答案:

答案 0 :(得分:2)

  

因此,如果我确实想在客户端请求时允许凭据,这是否意味着我无法使用Access-Control-Allow-Origin:*?

Access-Control-Allow-Origin:*的要点是,它可以让您轻松地授予对每个网站的访问权限。它让你说"这些数据是公开的,任何人都可以访问它"。

如果您需要凭据才能访问该资源,那么说"这些数据是公开的,任何人都可以访问它"。

如果您要授予访问每个网站的权限,那么登录到您网站的某个人访问的每个网站都可以从中读取数据(实际上将其公开)。

因此,您需要拥有一个允许访问数据的受信任站点的白名单,然后在明确授予对它们的访问权限之前检查Origin标头。