在 Chrome 浏览器或邮递员中调用 url 工作正常,但使用 axios 时会出现 404 错误

问题描述 投票:0回答:1

我有一个网址,当我使用浏览器和邮递员调用该网址时,它工作正常,但使用 axios 它会抛出 404 错误,如果有人帮助我清除此错误,我将不胜感激

iam 给出了我面临问题的代码片段

let response = await axios.get(`https://scholar.google.co.in/citations?user=sGJSZ1AAAAAJ&hl=en&cstart=0&pagesize=1000`, {
    headers: {
      "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
    },
  });

我检查了url是否正确然后我发现url没有错误然后我添加了user-agent标头但没有用

javascript web-scraping server axios http-status-code-404
1个回答
0
投票

您的请求被 CORS 政策阻止。

对于本地开发,您可以使用此扩展:

但正确的解决方案是为您的请求设置一个基本的代理服务器。您可以这样做:

  1. 新建一个文件夹,打开里面的终端
  2. 使用
    npm init
    创建 package.json 文件
  3. "type": "module"
    设置为
    package.json
  4. 奔跑
    npm i cors express node-fetch
  5. 创建一个index.js文件并将其放入其中:
import express from "express";
import cors from "cors"
import fetch from "node-fetch";

const app = express();
app.use(cors());

const requestListener = async function (req, res) {
  const response = await fetch("https://scholar.google.co.in/citations?user=sGJSZ1AAAAAJ&hl=en&cstart=0&pagesize=1000")
  const data = await response.text();
  res.send(data);
}

app.get('/', cors(), requestListener);

app.listen(2000, () => {
  console.log('Start listen on port 2000');
})
  1. 在终端中运行
    node index.js
  2. 然后像这样向该服务器发出请求:
let response = await axios.get("http://localhost:2000")

这将返回该页面的 HTML。

© www.soinside.com 2019 - 2024. All rights reserved.