我可能在桌面上有一个本地 html 文件,它访问一个 Web API (JAX-RS),它响应一些 JSON 数据。我启用了 CORS,一切正常,但只有在没有 SSL 的情况下。我怎样才能让它与 SSL 一起工作?我使用自签名证书并且可以从 WPF 应用程序调用此 Web api,但是从 JavaScript 应用程序(独立的 html 文件),当 Chrome 在 POST 之前发送 OPTIONS 飞行前时,请求似乎甚至没有到达服务器.我也尝试在浏览器中导入自签名证书,但没有任何改变。
最佳答案
预检请求不允许包含实体主体或凭据。如果您使用预检请求,则不能使用双向 SSL。
解决方案是更改服务器以使证书可选。我只使用 Apache HTTP 服务器或 Tomcat 完成过此操作,但我认为其他服务器也可以执行此操作。
在 apache 中,设置应更改为
SSLVerifyClient optional
并且在 Tomcat 中,SSL 设置应该更改为
clientAuth="want"
如果没有此更改,则只有 CORS 简单请求可以工作。
关于javascript - 如何从本地 html 文件通过 SSL 通过 ajax 调用 web api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491098/