Angular 2:window.crypto.subtle.importKey在'localhost'中工作但在'ip'上不起作用

时间:2017-07-19 09:37:02

标签: javascript angular encryption webcryptoapi

我是Angular 2的新手。我正在尝试实现一个登录表单,该表单在经过某些加密步骤后将emailid和密码发送到服务器。

我使用AES-CTR实现了AES-ECB,

https://github.com/diafygi/webcrypto-examples

我使用了' importKey '和'加密'方法,如下所示,

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];

    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetShouldAntialias(c, YES);

    // Fill background
    CGContextSetFillColorWithColor(c, [UIColor colorWithWhite:1 alpha:1].CGColor);
    CGContextAddRect(c, CGRectMake(0, 0, rect.size.width, rect.size.height));
    CGContextFillPath(c);

    // Dark inside
    if (_type == LDConstrainTypeCircle) {
        CGContextAddEllipseInRect(c, self.blurRect);
        CGContextClip(c);
    }
    CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
    CGContextAddRect(c, self.blurRect);
    CGContextFillPath(c);
}

我使用本地服务器来获取响应。使用localhost时一切正常。正确发送请求和响应并从服务器获取。但是,当通过IP连接时,它会显示错误“NotSupportedError:仅允许安全来源”

当我使用 Chrome canary 时,它表示无法识别importKey方法。所以当我用Chrome控制它时,控件并没有超出importKey方法。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

Chrome限制使用WebCryptographyApi来保护原点。这意味着' https'。 localhost是启用开发的特殊地址。因此,要在真实环境中使用WebCrypto,您需要设置SSL / TLS服务器