gpt4 book ai didi

javascript - JQuery 的 ajax 可以通过 https 发送客户端证书吗?

转载 作者:行者123 更新时间:2023-11-30 05:40:57 26 4
gpt4 key购买 nike

场景如下:有两台服务器,A 和 B,它们在不同的域中。当用户访问服务器A的网页时,它使用服务器A的证书对网站进行加密,并通过HTTPS将加密后的网站返回给用户。然后,用户输入了一些数据。

现在,我想通过 HTTPS 对服务器 B(在其他域)进行 ajax 调用以提交数据。在服务器 B,我需要检查 ajax 调用是否真的来自服务器 A。所以,我想检查服务器 A 的证书(客户端证书)以验证调用。

我的问题是:JQuery 的 ajax 可以通过 https 发送服务器 A 的证书,以便我可以在服务器 B 上检查它吗?

备注:由于某些原因,响应不能返回到服务器 A,它必须直接到服务器 B。

任何帮助将不胜感激。谢谢!

最佳答案

Now, I want to make an ajax call to server B (at other domain) over HTTPS to submit the data. At server B, I need to check the ajax call is really come from server A. So, I would like to check server A's certificate (client certificate) to validate the call.

你不能真正做到这一点,因为它不是这样运作的。因为您的 JavaScript 运行在客户端的浏览器中而不是服务器上,所以请求不是来自服务器 A,而是直接来自客户端的计算机。

因此,您需要做的是验证请求来自有权访问服务器 A 上相关资源的人。

  1. 执行此操作的一种方法是将响应发送到服务器 A,对其进行验证,然后将其发送到服务器 B,但您已经说过您不能这样做。

  2. 另一种方法是在服务器 A 上生成一些 token 值,将其发送到客户端,然后让客户端将其发送到服务器 B,您可以在服务器 B 上进行验证。

    例如,您可以有一个 A 和 B 都知道的预共享 secret ,使用该 secret 在服务器 A 上生成当前时间的 HMAC,然后在服务器 B 上验证 HMAC 并检查时间以确保其年龄是合理的。有许多不同的方法可以做到这一点。

  3. 最后,您还可以简单地让服务器 B 仅发送服务器 A 地址的 Access-Control-Allow-Origin header 。这是我能想到的在不修改服务器 A 的情况下执行此操作的唯一方法,它可以保护您免受其他网站盗链的影响,但它不会阻止任何人直接从服务器 B 获取资源网络浏览器的上下文。

关于javascript - JQuery 的 ajax 可以通过 https 发送客户端证书吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com