Я пытаюсь сделать почтовый запрос через https с помощью vue-axios. Однако, поскольку я использую самоподписанный сертификат, который я создал, я получаю следующую ошибку:
net::ERR_CERT_AUTHORITY_INVALID
При поиске я обнаружил, что большинство людей решают это, выполнив следующие действия.
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 });
Я пробовал оба варианта, но не имел никакого успеха с ними. Я использовал модуль https npm для https.Agent.
кто-нибудь знает, как решить эту проблему? или мне просто перейти с axios на другие модули?
отредактировано:
кусок кода, который я запускаю с ошибкой на данный момент:
const axiosInstance = axios.create({
baseURL: 'https://localhost:5000',
httpsAgent: new https.Agent({
rejectUnauthorized: false
}),
});
axiosInstance.post('/user', LoginRequest,
{ headers: { 'Content-Type': 'application/json' } })
.then(response => this.assignLogin(response.data));
попытался перейти на модуль с именем игла и использовать https, но получил ту же ошибку:
иголка:
const headers = { 'Content-Type': 'application/json' };
const options = {
method: 'POST',
headers: headers,
rejectUnauthorized: false,
requestCert: true,
agent: false,
strictSSL: false,
}
needle.post('https://localhost:5000/user', LoginRequest, options).on('end', function() { })
https:
const options = {
hostname: 'localhost',
port: 5000,
path: '/user',
strictSSL: false,
rejectUnauthorized: false,
secureProtocol: 'TLSv1_method',
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
};
const req = https.request(options, (res) => {
console.info('statusCode:', res.statusCode);
console.info('headers:', res.headers);
res.on('data', (d) => {
this.assignLogin(d);
});
});
req.on('error', (e) => {
console.error(e);
});
req.write(LoginRequest);
req.end();
добавил часть axios выше
Если вы собираетесь пройти через все эти проблемы, чтобы разрешить недействительный сертификат, почему бы не запустить свой сервер в режиме http во время разработки, а затем, когда он будет работать, получить действительный сертификат, соответствующий домену?
В документах для аксиомы сказано: «httpAgent и httpsAgent определяют пользовательский агент, который будет использоваться при выполнении запросов http и https, соответственно, в узле.js.». Я видел, как они различают браузеры и узлы в документации, поэтому, возможно, эта конфигурация не подходит для браузеров (Vue). По крайней мере у меня тоже не работает.





Поскольку вы упомянули, что «используете созданный вами самозаверяющий сертификат», я предполагаю, что вы используете его для локальных тестов разработки. У меня была аналогичная проблема при локальном тестировании в Chrome.
Поскольку это сообщение об ошибке (net::ERR_CERT_AUTHORITY_INVALID) — это способ блокировки Chrome URL-адреса с «небезопасным» сертификатом, вам необходимо решить эту проблему через Chrome, сообщив ему, что вы доверяете сертификату.
Я использую старое решение thisisunsafe. (ИСПОЛЬЗУЙТЕ ЭТО РЕШЕНИЕ, ТОЛЬКО ЕСЛИ ВЫ ДЕЙСТВИТЕЛЬНО ДОВЕРЯЕТЕ СЕРТИФИКАТУ, Т.Е. ЭТО ВАШ СОБСТВЕННЫЙ СЕРТИФИКАТ):
РЕШЕНИЕ: Просто откройте вкладку в Chrome, попробуйте открыть URL-адрес с адресом вашего сервера (в вашем случае https://localhost:5000/). Chrome отобразит предупреждающее сообщение, поэтому щелкните в любом месте окна и введите thisisunsafe. Теперь Chrome разрешит доступ к этому сертификату. Когда вы снова перезагрузите клиент и попытаетесь запросить сервер, он будет работать.
@Dionysis.B stackoverflow.com/a/35275060/10043987
Где твой код?