栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么大多数浏览器的预检请求中不包括TLS客户端证书?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么大多数浏览器的预检请求中不包括TLS客户端证书?

请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1019603和我在CORS中使用客户端https证书的答案中的评论(我忘记了以前见过同样的问题……)。

要点是,您发现与众不同的原因是Chrome中的错误。我已经在https://bugs.chromium.org/p/chromium/issues/detail?id=775438上提交了一个错误。

问题在于Chrome浏览器未遵循此规范要求,该规范要求浏览器不要在预检请求中发送TLS客户端证书;因此Chrome
在飞行前发送您的TLS客户端证书。

Firefox / Edge / Safari遵循规范要求,并且 不要 在飞行前发送TLS客户端证书。


更新
:在对问题的修改中添加的Chrome屏幕截图显示了对

OPTIONS
请求的
GET
请求以及随后的请求,而
GET
不是
POST
代码中的请求。因此,问题可能出在服务器禁止
POST
请求。


https://i.stack.imgur.com/GD8iG.png中显示的请求是CORS的预检

OPTIONS
请求,浏览器会在尝试
POST
在您的代码中尝试该请求之前自动自动发送该请求。

Content-Type: application/json
您的代码添加的请求标头是触发浏览器发出该预检
OPTIONS
请求的原因。

了解浏览器就不会包括任何这一点很重要凭据在预检

OPTIONS
所以服务器的请求被发送到必须被配置为不需要任何凭证/认证-
请求
OPTIONS
请求
/api/transactions/own-transactions/

但是,从https://i.stack.imgur.com/GD8iG.png看来,服务器正在禁止对此

OPTIONS
请求
/api/transactions/own-transactions/
。可能是因为请求缺少服务器期望的凭据,或者是因为服务器配置为禁止所有
OPTIONS
请求,无论如何。

因此,结果是,浏览器认为预检不成功,因此它就在那里停止了,并且从不尝试

POST
从您的代码中尝试请求。

鉴于https://i.stack.imgur.com/GD8iG.png中显示的内容,很难理解它在Chrome中的实际效果如何-
尤其是考虑到没有浏览器在预检请求中曾经发送过任何形式的凭证,因此就预检而言,任何可能的浏览器在处理凭据方面的差异都不会造成任何影响。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号