ele*_*ype 5 javascript ajax jquery cors
我正在框架中实现CORS(跨域资源共享)。
我知道,当使用Jquery发出XMLHttpRequest请求ajax(...)且withCredentials属性为时true,服务器必须响应这两件事:
Access-Control-Allow-Credentials: trueAccess-Control-Allow-Origin:[THE_DOMAIN]服务器无法使用通配符响应Access-Control-Allow-Origin:*:无效!
我的问题:我怎么知道服务器withCredentials: true上已经使用过,所以我不使用通配符?
我比较了使用withCredentials: false时withCredentials: true和使用时发送的标头,它们是相同的!
因此,如果我确实想在客户端请求时允许凭据,这是否意味着我永远无法使用Access-Control-Allow-Origin:*?
那么,如果我确实想在客户端请求时允许凭据,是否意味着我永远不能使用 Access-Control-Allow-Origin:*?
是的。
其要点Access-Control-Allow-Origin:*是,它让您只需很少的努力即可授予对每个网站的访问权限。它让您说“此数据是公开的,任何人都可以访问它”。
如果您需要凭据才能访问资源,那么说“此数据是公开的,任何人都可以访问它”是没有意义的。
如果您授予对每个网站的访问权限,那么登录您网站的人访问的每个网站都可以从中读取数据(有效地将其公开)。
因此,您需要有一个允许访问数据的受信任站点的白名单,然后在显式授予对它们的访问权限之前检查 Origin 标头。