4

我的配置是这样的:

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

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

客户端在 no authentication/no ssl 选项上效果很好。但是,我无法使用 https/authentication 使其工作。

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

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

4

1 回答 1

0

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

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

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

您的选择是:

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