Можно ли настроить Axios (работающий в node.js), чтобы игнорировать определенные ошибки SSL (например, просроченные сертификаты)? Я хотел бы знать, что с сертификатом SSL возникла проблема, но я хочу, чтобы транзакция все равно завершилась (по умолчанию она не выполняется).
Вы можете настроить axios для использования специального агента и установить rejectUnauthorized
равным false
для этого агента:
// At instance level
const instance = axios.create({
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
});
instance.get('https://something.com/foo');
// At request level
const agent = new https.Agent({
rejectUnauthorized: false
});
axios.get('https://something.com/foo', { httpsAgent: agent });
Надеюсь это поможет!
@nickuraltsev
он не работает с вышеуказанными изменениями
const https = require ('https');
axios ({
url: url,
метод: 'GET',
заголовки: {
'Content-Type': 'приложение / json'
},
responseType: 'json',
httpsAgent: новый https.Agent ({rejectUnauthorized: false})
})
.then (response => {
})
.catch (error => {
})
}
}
На самом деле, я считаю, что это работает, но конкретно касается самозаверяющих сертификатов. Он не допускает просроченных или недействительных сертификатов. Чтобы разрешить _any_ сертификат, вы должны добавить эту строку в верхней части вашего кода;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
Это позволит практически все, но это также опасно, поэтому используйте его с осторожностью.
@ Eric24
Это не сработает, если я добавлю приведенный выше код в первую строку своего файла.
Пожалуйста, дайте мне знать точный путь для добавления.
Для меня (нужно игнорировать истекший, но в остальном действительный сертификат) он работал, просто добавляя эту строку сразу после «use strict»; в верхней части основного файла node.js перед любым другим кодом. Это параметр «все или ничего», но его цель - позволить транзакции HTTPS завершиться, когда агент в противном случае завершил бы транзакцию из-за проблемы с сертификатом. Может ваш конкретный сценарий не имеет отношения к сертификату?
если не в узле, как получить модуль https ????
Модуль https НЕ РАБОТАЕТ с react-native
+1
@psahni Знаете ли вы, как игнорировать проблему ssl в React Native?
@Germinate - я все еще
Одно из решений - создать прокси-сервер в узле между собственным и основным сервером реакции. И перенаправьте запрос от собственного прокси-сервера к главному серверу.
@psahni Вы пробовали это решение ?
@Germinate - Выглядит отлично !. Спасибо, что поделились этим. Итак, после внесения этих изменений. Можем ли мы напрямую использовать реагирующий модуль?
Все еще не работает с реагирующим родным: /
В браузере работает? Я использую axios с приложением vue js и получаю эту ошибку net :: ERR_CERT_AUTHORITY_INVALID с самоподписанным сертификатом. Предлагаемое решение предполагает, что я могу использовать https.Agent, но я не знаю, как использовать модуль https в vue. Есть другой способ? Благодарность
у нас есть https внутри react-native? если да, то как его включить?
если вы используете nuxt / axios, вы можете добиться этого, создав плагин со следующим кодом:
Вот документированный метод создания плагина в nuxt: https://axios.nuxtjs.org/extend.html
Этот шаблон разработки может быть полезен, если вы разрабатываете API локально с помощью самозаверяющего сертификата.
import https from 'https';
export default function ({ $axios, store }) {
const agent = new https.Agent({
rejectUnauthorized: false
});
$axios.onRequest(config => {
if (process.env.dev) {
config.httpsAgent = agent;
}
});
}
что такое "пост" пример этого?
В настоящее время пытаюсь выполнить почтовый запрос и игнорировать SSL.
если вы используете nuxt / axios, вы можете добиться этого, создав плагин со следующим кодом:
Вот документированный метод создания плагина в nuxt: https://axios.nuxtjs.org/extend.htmlЭтот шаблон разработки может быть полезен, если вы разрабатываете API локально с помощью самозаверяющего сертификата.
import https from 'https'; export default function ({ $axios, store }) { const agent = new https.Agent({ rejectUnauthorized: false }); $axios.onRequest(config => { if (process.env.dev) { config.httpsAgent = agent; } }); }
Могу ли я по-другому называть мои существующие запросы asyncData или axios после создания axios.js в папке модулей?
Посмотрите на это, он решил это для меня: https://stackoverflow.com/a/54475750/8577483
Проблема все еще возникает. Использование https-browserify для получения модуля https
узла в браузере.
const instance = axios.create({
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
});
instance.post("https://...");
возвращает ERR_CERT_AUTHORITY_INVALID
Я также получаю сообщение об ошибке, используя приложение, созданное с помощью response-create-app
const axios = require('axios');
const https = require('https');
const result = await axios('https://localhost:8080/search/' + text, {
headers: {"lang": lang},
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
});
Я также попытался добавить process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
в начало файла (ниже const https = require('https');
), но безрезультатно.
Почему это было закрыто? Не похоже, что есть рабочее решение.
Я наткнулся на эту ветку из-за ошибки ssl handshake failed в моих журналах и подумал о попытке отключить проверки, как описано другими выше. После большого количества устранений неполадок (изначально я решил, что это связано с CORS), в конечном итоге это произошло из-за того, что в моем SSL-сертификате не было встроенного сертификата CA. Если вы подозреваете, что это могло быть так, используйте один из бесплатных SSL-сертификатов. службы проверки, такие как https://www.ssllabs.com/ssltest/ или https://www.digicert.com/help/, чтобы убедиться, что ваш сертификат в порядке. Надеюсь, это поможет кому-то другому.
Я внезапно столкнулся с этой проблемой (несмотря на то, что ничего не изменил). Для меня это исправило просто выполнение стандартного запроса GET через новую вкладку. Я имею в виду, что если у вас есть маршрут «/ users», попробуйте открыть новую вкладку с помощью {serverPath} / users. Мне это помогло, хотя я не знаю почему.
Вы также можете просто добавить переменную среды при запуске среды разработки:
экспорт NODE_TLS_REJECT_UNAUTHORIZED = 0 && пряжа dev --env.NODE_TLS_REJECT_UNAUTHORIZED = 0
И, возможно, добавьте его в свой файл package.json
"scripts": {
"dev": "export NODE_TLS_REJECT_UNAUTHORIZED=0 && nuxt --env.NODE_TLS_REJECT_UNAUTHORIZED=0",
Я столкнулся с той же проблемой. Я использую axios
и использую метод POST. Я пробовал все решения, упомянутые выше, но не повезло. Кто-нибудь нашел рабочие решения? Спасибо.
Я не мог заставить его работать ни на одном экземпляре.
// doesn't work
axios.create({
httpsAgent: new https.Agent({ rejectUnauthorized: false })
});
// it works
https.globalAgent.options.rejectUnauthorized = false;
Использование узла;
Это ошибка SSL: unable to get local issuer certificate (20)
(из запроса curl)
Есть ли какие-нибудь обновления для React Native?
У меня та же проблема, что и у @Falci - работает только при глобальной установке флага. Моя проблема немного другая, Error: self signed certificate in certificate chain
Я столкнулся с той же проблемой. Я использую
axios
и использую метод POST. Я пробовал все решения, упомянутые выше, но не повезло. Кто-нибудь нашел рабочие решения? Спасибо.
import axios from "axios";
const https = require('https');
const resp = await axios({
url,
method: "POST",
auth,
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
});
Работал у меня.
Застрял здесь для среды React Native. Любое решение для приложения React Native, пожалуйста?
Привет @fozhao
Если вы пытаетесь использовать недействительные сертификаты, вы можете попробовать следовать этому подходу:
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system"/>
<certificates src="user"/>
</trust-anchors>
</base-config>
....
</network-security-config>
Это решение сработало для моего.
Спасибо!
@Fonger, пожалуйста, расскажите подробнее с хитами и примерами.
Модуль https предназначен для узла, не работает в Vue / React / ... В основном приводит к тому же результату, что и process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
Если вы хотите игнорировать SSL, потому что вы используете SSR и в любом случае предварительно выбираете данные на локальном сервере, это не приведет к каким-либо проблемам с безопасностью.
Не забудьте установить эту переменную env на сервере, хотя я допустил ошибку, пытаясь установить ее на клиенте, поэтому сервер все равно разбился.
@tamangsuresh, почему я?
Самый полезный комментарий
Вы можете настроить axios для использования специального агента и установить
rejectUnauthorized
равнымfalse
для этого агента:Надеюсь это поможет!