Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CORS—服务器如何知道jQueryAjax';s";随附凭证:true";使用了什么?_Javascript_Jquery_Ajax_Cors - Fatal编程技术网

Javascript CORS—服务器如何知道jQueryAjax';s";随附凭证:true";使用了什么?

Javascript CORS—服务器如何知道jQueryAjax';s";随附凭证:true";使用了什么?,javascript,jquery,ajax,cors,Javascript,Jquery,Ajax,Cors,我正在一个框架中实现CORS(跨源资源共享) 我知道,当使用Jquery的ajax(…)发出XMLHttpRequest请求,并且withCredentials属性为true时,服务器必须响应这两件事: 访问控制允许凭据:true 访问控制允许来源:[u域] 服务器无法使用通配符响应,访问控制允许源代码::那 我的问题:我如何在服务器上知道已使用了with credentials:true,因此我不使用通配符 我将与credentials:false以及与credentials:true使用

我正在一个框架中实现CORS(跨源资源共享)

我知道,当使用Jquery的
ajax(…)
发出XMLHttpRequest请求,并且
withCredentials
属性为
true
时,服务器必须响应这两件事:

  • 访问控制允许凭据:true
  • 访问控制允许来源:[u域]
服务器无法使用通配符响应,
访问控制允许源代码:
:那

我的问题:我如何在服务器上知道已使用了
with credentials:true
,因此我不使用通配符

我将
与credentials:false
以及
与credentials:true
使用时发送的头进行了比较,它们是相同的

那么,如果我确实希望在客户端请求时允许凭据,这是否意味着我永远不能使用
访问控制允许源代码:

那么,如果我确实想在客户端请求时允许凭据,这是否意味着我永远不能使用访问控制允许源代码:

accesscontrolalloworigin:
的要点是,它允许您只需很少的努力就可以访问每个网站。它让你说“这些数据是公开的,任何人都可以访问”

如果您需要凭据来访问资源,那么说“此数据是公共的,任何人都可以访问它”是没有意义的

如果您要授予对每个网站的访问权限,那么登录您网站的人访问的每个网站都可以从中读取数据(有效地将其公开)


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

如果
withCredentials
设置为true,您还应该收到源站域上设置的任何cookie,我不确定这是否适用于初始请求,或者仅在服务器响应了
访问控制允许凭据:true
(我可以想象这两种情况都是真的,尽管我认为后者最合理)。至于通配符,我倾向于总是指定允许的域(从源标题)@RogierSpieker当使用
with credentials:true进行查询但没有任何cookie时,它也会使用通配符失败。我认为当客户使用带有凭据的
时,强制客户发送cookie是不可取的:true
。。。你不知道他的密码的逻辑。所以我认为你不能真的依赖饼干的存在。谢谢你的帮助!我并不是说应该强制设置cookie,只是说如果设置了
withCredentials:true
,就会发生这种情况。在这种情况下,cookie的存在将表明
with credentials
true
。我想你是对的!但是我仍然不知道为什么会有人想要使用通配符版本!我的意思是,您只需将请求的
Origin
头复制到响应的
Access Control Allow Origin
头,这也“授予非常多的网站”,并且您还允许凭据这样做。。。通配符版本是否允许在使用“头复制”技巧时丢失其他内容?您可以将带有静态值的头粘贴到服务器配置中的一行代码中。动态地回显原始标头需要更多的努力。