Создание XMLHttpRequest в Vercel
Я пытаюсь использовать Vercel для запроса других API. Я могу получить запрос на сервер Vercel и вернуть соответствующее значение. Я также могу без проблем создать XMLHttpRequest из другого файла js. Проблема возникает, когда я пытаюсь вставить XMLHTTPRequest на свой сервер Vercel.
module.exports = (req, res) => {
const { name = "World" } = req.query;
var newReq = new XMLHttpRequest();
newReq.open("GET", url);
newReq.setRequestHeader("Authorization", authKey);
newReq.send();
newReq.addEventListener("load", function () {
if (newReq.status == 200 && newReq.readyState == 4) {
var response = JSON.parse(newReq.responseText);
result = `
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
<text x="0" y="15" fill="red">${response}</text>
</svg>`;
res.writeHead(200, { "Content-Type": "image/svg+xml" });
res.write(result);
res.end();
}
});
};
Всякий раз, когда я пытаюсь получить доступ к серверу, я получаю ошибку 502 неверного шлюза. Я считаю, что ошибка связана с выполнением другого HTTP-запроса на текущем сервере Vercel. Я не знаю, как этого добиться.
Будем признательны за любые советы!
1 ответ
Решено с использованием http и node-fetch. На случай, если у кого-то еще возникнут подобные проблемы в будущем.
const http = require("http");
const url = require("url");
const fetch = require("node-fetch");
http
.createServer(async (req, res) => {
const reqURL = url.parse(req.url, true);
const { userID } = reqURL.query;
var headers = { Authorization: "..." };
const newResponse = await fetch(
`newURL`,
{ method: "GET", headers: headers }
);