Локальное выполнение Google: запрос https не выполнен - PullRequest
0 голосов
/ 27 февраля 2020

Цель

Обеспечить безопасность в моем сообщении запроса.

Среда:

Библиотека: Версия

  • node-fetch: 2.6.0

  • https: изначально реализовано в узле, похоже

  • узел: 12.15.0

Устройство: версия

  • Google home nest mini: 2-е поколение

Issue

Я получаю сообщение "Не удалось «извлекать сообщение об ошибке», когда я получаю запрос к API, обслуживаемому с помощью https и самосертифицированного сертификата.

Что я пробовал:

1 - запрос http: он отлично работает на домашнем устройстве Google и на моем локальном machine,

2 - запрос https: он работает на моем локальном компьютере, но не на домашнем устройстве Google.

Код, который я использую:

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 без ошибок

Мои ошибки

Go по этой ссылке: ошибки

Воспроизвести ошибку

Я сделал полное руководство, если вы хочу воспроизвести ошибку: https://github.com/killvi/localExecutionHttpsError

В этом туто я пытаюсь сделать запрос https на Google, чтобы проверить, могу ли я сделать это без ошибок. Так что это не совсем та же реализация, что и у меня. Но если он работает с Google, по крайней мере, я буду знать, что моя проблема не в реализации https на домашнем устройстве Google.

1 Ответ

0 голосов
/ 27 марта 2020

Google ответил на мой вопрос:

В настоящее время локальные исполнительные приложения могут использовать только незашифрованный HTTP / TCP / UDP для локальной связи со своими устройствами. Было запрошено, чтобы мы включили возможности TLS по локальному каналу, чтобы включить HTTPS и другие стандартные методы шифрованного транспорта.

...