我有一个有两个https服务器的站点.一个(前端)提供由静态页面组成的UI.另一个(后端)提供微服务.他们俩都碰巧使用相同的(测试)X509证书来识别自己.单独地,我可以通过https连接到它们,需要客户端证书"tester".
到目前为止,我们通过nginx设置隐藏了CORS问题,这使得前端和后端看起来是相同的Origin.我已经为所有请求实现了标题'Access-Control-Allow-Origin','Access-Control-Allow-Credentials'; 使用方法,预检检查请求的标题(OPTIONS).
在Chrome中,像这样的跨站点工作得很好.我可以看到前端URL和后端URL是不同的站点.我看到在发出后端请求之前发出了OPTIONS请求.
即使Chrome似乎不需要它,我确实找到了将用于执行请求的xmlhttprequest对象并对其执行了操作xhr.withCredentials = true,因为这似乎是fetch.js在它获取时所做的事情"credentials":"include".我注意到有一个xhr.setRequestHeader可用的功能,我可能需要用来让Firefox开心.
有没有人在这里使用CORS结合这样的2路SSL证书,并且有这个Firefox问题并在某处修复了它.我怀疑它不是服务器端修复,而是客户端需要做的事情.
我实际上没有使用客户端证书对此进行测试,但我似乎记得如果Access-Control-Allow-Origin设置为 *通配符而不是实际域,Firefox 将不会发送凭据。请参阅MDN 上的此页面。
此外,Firefox 向服务器发送 CORS 请求时也存在问题,该服务器期望在 TLS 握手中提供客户端证书。基本上,Firefox 不会在预检期间发送证书,从而造成先有鸡还是先有蛋的问题。在 bugzilla 上查看此错误。
| 归档时间: |
|
| 查看次数: |
6221 次 |
| 最近记录: |