【问题标题】:Making XMLHttpRequest in Vercel在 Vercel 中制作 XMLHttpRequest
【发布时间】:2020-08-30 22:51:10
【问题描述】:

我正在尝试使用 Vercel 来查询其他 API。我能够让 Vercel 服务器接收查询并返回适当的值。我还可以毫无问题地从另一个 js 文件生成 XMLHttpRequest。当我尝试将 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 bad gateway 错误。我相信错误是在当前 Vercel 服务器中发出另一个 HTTP 请求。我不知道如何做到这一点。

任何提示将不胜感激!

【问题讨论】:

    标签: xml asynchronous xmlhttprequest vercel http-status-code-502


    【解决方案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 }
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2022-11-23
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      相关资源
      最近更新 更多