【问题标题】:Local Execution Google: https request failed本地执行 Google:https 请求失败
【发布时间】:2020-02-27 07:53:22
【问题描述】:

目标

确保我的请求消息的安全性。

环境:

库:版本

  • 节点获取:2.6.0

  • https :似乎是在节点中原生实现的

  • 节点:12.15.0

设备:版本

  • Google home nest mini:第 2 代

问题

当我收到使用 https 和自认证证书提供的 api 的请求时,我收到“无法获取”错误。

我尝试了什么:

1 - http 请求:它在 google home 设备和我的本地机器上运行良好,

2 - https 请求:它适用于我的本地机器,但不适用于 google home 设备。

我使用的代码:

import fetch from 'node-fetch';
import env from './configFile';
import https, { Agent } from 'https';

export default function get(): Promise<any> {
    const url = "https://api.url"; 
    const httpsAgent = new https.Agent({
        rejectUnauthorized: false,
    });

    const option = {
        method: 'get',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
            Authorization: 'Basic ' + btoa(env.login! + ':' + env.password!),
        },
        agent: httpsAgent,
    };

    return fetch(url, option)
        .then(res => {
            return res.json();
        })
        .catch(error => {
            throw new Error(error);
        });
}

这里我禁用 ssl 认证验证。这是我稍后会更改的内容,因为它不安全,但至少我想做一个没有错误的 https 请求。

我的错误

转到此链接:errors

重现错误

我做了一个完整的教程,如果你想重现错误:https://github.com/killvi/localExecutionHttpsError

在本教程中,我尝试在 google 上发出 https 请求,以检查我是否可以无误地做到这一点。所以与我的实现并不完全相同。但如果它适用于谷歌,至少我会知道我的问题不是来自谷歌家庭设备中的 https 实现。

【问题讨论】:

  • 从您的描述中不清楚您是如何在家庭设备上本地运行此程序的,使用此信息更新您的问题可能会很有用。此外,查看“未能获取”错误的详细信息(您在上面的 catch 部分中得到的确切内容的日志)可能会很有用。
  • 我会尝试分享一个可以重现错误的代码和一个在谷歌主页上运行代码的教程。因为,我得到的唯一错误信息就是“获取失败”:/

标签: javascript node.js https local google-home


【解决方案1】:

Google 回答了我的问题:

目前,本地执行应用只能使用未加密的 HTTP/TCP/UDP 与其设备进行本地通信。已要求我们通过本地通道启用 TLS 功能,以启用 HTTPS 和其他标准加密传输方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多