通过javascript从HTTP页面调用HTTPS api


Calling HTTPS APIs from HTTP pages via javascript

我在http://example.com上有一个登陆页面,上面有一个ajax登录栏,它将用户的登录信息发送到服务器,接收身份验证响应,并将其显示给用户。

这种方法的问题是,用户登录信息以明文形式发送到服务器,没有SSL加密。但是,当对https://example.com进行同样的POST请求时,NGINX返回401 Unauthorized.

我们可以通过什么方式使用https://example.com/user_api作为授权URL?

多谢!

你应该在整个网站上使用https,包括登陆页面。不允许常规http。如果你这样做,你所遇到的问题就会消失。

即使登陆页面上没有敏感数据,你也应该对整个网站使用https的原因是因为加密通信只是SSL的一半。另一半(对于保护您的用户同样重要)是服务器的标识。当使用https检索站点时,通过检查远程服务器的证书来验证远程服务器的标识,该证书是用其私钥签名的。此证书是针对受信任的第三方进行验证的,因此用户知道他们确实在与您的服务器通话。

如果您不为您的整个站点使用https,您将使恶意服务器很容易冒充您的站点并获取您的用户凭据。更棒的是,由于这种设计,他们可以让你的用户登录到你的应用程序,并将他们转发到正确的页面,没有人知道!

另一个原因是,当大团队在开发一个web应用程序时,很容易有人不小心创建了一个应该是安全的页面,但却使用了http。这可能是一个很大的安全漏洞。

请考虑重新设计使用https为您的整个网站。虽然前期工作比较多,但安全性的回报是巨大的。