使用XHR发送客户端证书

5

我想使用JavaScript打开一个SSL服务。为此,我需要通过XMLHttpRequest对象发送我的证书。我能用JavaScript实现吗?我无法在任何地方找到如何实现它的方法。

我的代码如下:

xmlhttp.open("post","https://[some ip]:[some secured port]",false);
xmlhttp.send();

然而它并没有工作。另一方面,当我从浏览器中直接使用"https://[某个ip]:[某个安全端口]"时,它会让我选择证书,但是它能够正常工作。

我应该如何使它能够直接从JavaScript中工作呢?我的情况应该怎样解决?


你可能想阅读关于类似问题的这篇广泛讨论文章:http://stackoverflow.com/q/9542772/575527 - Joseph
2个回答

4

我认为这是不可能的。

此外,同源策略很可能会给你带来麻烦。


不可能吗?如果我想使用ajax / javascript等发送证书,那还有什么是可能的呢? - user967710
如果浏览器设置为自动选择一个,它可能会起作用。但出于安全原因,它只能在相同的主机:端口上工作。然而,有一些方法,如CORS和XDomainRequest,可以在最近的浏览器中使用。 - ThiefMaster
我找到了这个链接,它告诉我可以使用Ajax和HTTPS。 - user967710
有没有什么快速缩小这个差距的方法 - 不需要太多的代码更改?例如,使用不同的对象来传递客户端证书?还是有其他建议? - user967710

0

你可以考虑一个解决方案。如果你检测到证书不存在,可以尝试创建一个高度、宽度和边框都为 0 的 iframe(基本上是一个不可见的 iframe),将其指向所需的 URL,然后浏览器会显示证书选择窗口。

我在 Firefox 和 Edge 测试过,这个变通方法似乎都有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接