【问题标题】:How to call a web api via ajax over SSL from a local html file?如何从本地 html 文件通过 ajax over SSL 调用 web api?
【发布时间】:2013-08-28 14:41:45
【问题描述】:
我在 5 月的桌面上有一个本地 html 文件,它访问一个响应一些 JSON 数据的 Web api (JAX-RS)。我启用了 CORS,一切正常,但只有没有 SSL。我该如何做才能使其与 SSL 一起使用?我使用自签名证书,并且可以从 WPF 应用程序调用此 Web api,但是从 JavaScript 应用程序(独立的 html 文件),当 Chrome 在 POST 之前发送 OPTIONS 飞行前,请求似乎甚至没有到达服务器.我也尝试在浏览器中导入自签名证书,但没有任何改变。
【问题讨论】:
标签:
javascript
ajax
ssl
cors
【解决方案1】:
预检请求不允许包含实体主体或凭据。如果您使用的是预检请求,则不能使用双向 SSL。
解决方案是更改服务器以使证书可选。我只使用 Apache HTTP 服务器或 Tomcat 完成了这项工作,但我认为其他服务器也能做到这一点。
在 apache 中设置应该改为
SSLVerifyClient optional
在 Tomcat 中,SSL 设置应更改为
clientAuth="want"
如果不进行此更改,则只有 CORS 简单请求可以工作。