如何使用来自 extjs 的 SSL 调用 rest

Posted

技术标签:

【中文标题】如何使用来自 extjs 的 SSL 调用 rest【英文标题】:how to call rest using SSL from extjs 【发布时间】:2012-11-22 03:05:48 【问题描述】:

我的配置是这样的:

REST 服务器:WCF-REST 托管在 Windows 服务上。 Web 服务器:用于托管我的 html+js 文件的 IIS (Sencha ExtJS)。 客户端:客户端使用 Sencha ExtJS 编写

我在 REST 服务器上有两个身份验证/安全配置: 1. http 根本没有身份验证。 2. https (ssl) 与基本认证。

客户端在无身份验证/无 ssl 选项上运行良好。 但是,我无法使用 https/authentication 使其工作。

如果我尝试使用浏览器访问 https url,我会收到一条消息,指出服务器证书无效。我可以忽略它,然后会出现一个用户/密码弹出窗口。输入用户/密码后,我得到 REST 响应。

使用 javascript 让它工作我缺少什么?

【问题讨论】:

【参考方案1】:

我假设您的开发服务器使用的是自签名证书;如果是这种情况,您要求在未经用户同意的情况下进行不受信任的交易,我很确定在 Javascript 中没有办法做到这一点。

HTTPS 交易需要建立信任以确保您的数据安全。通常这是通过与第三方共享和验证的证书来完成的,但作为开发人员,我们经常在开发和测试期间使用自签名证书,因为它们快速、简单且免费。这些自签名证书需要在交易的每一端都知道,以取代已经用第三方证书建立的信任。

如果您的浏览器没有安装自签名证书的副本,您将看到典型的“哦-不-您正在访问-最危险的网站”消息提到。浏览器为用户提供了一个 UI 来临时接受该证书(建立所需的信任),从而允许交易继续进行。 Ajax 事务没有这种奢侈——浏览器只是让事务终止,因为没有用户界面。我认为我们都应该有点庆幸在 Javascript 中没有办法打败它。

您的选择是:

    在一个选项卡或窗口中临时接受交易可能会为某些浏览器上其他选项卡/窗口中的交易建立信任(我在 Chrome 中使用这种方法)。 在您的浏览器中安装证书(“如何”在很大程度上取决于您选择的浏览器) 比您计划的要早一点签署该证书 - 无论如何您都需要它,因为您正在开发下一个 Facebook,对吧? :-)

【讨论】:

以上是关于如何使用来自 extjs 的 SSL 调用 rest的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自更高版本 Sencha ExtJS 的对象?

来自 AJAX 调用的 res.redirect

ExtJS 和 Ajax 与 SSL (https)

Extjs 菜单检查项 - 如何调用?

ExtJS 4 - 如何加载带有来自表单的最新值的参数的网格存储?

无法使用来自 IIS 的权限为 SSL/TLS 建立安全通道