为什么 'blocked by CORS policy' 在 React 中,而不是在 Node 中?

Why 'blocked by CORS policy' in React, but not with Node?

运行 React 中的完全相同的脚本被 Cors 策略阻止,但当我 运行 它与 node.

  1. 为什么用node可以,用React不行?
  2. 如何在 React 应用程序中获取它?
  3. this chrome extension也允许,是因为脚本是访问youtube执行的,所以domain是youtube吗?
async function isThisAllowed() {
    const videoURL = `https://www.youtube.com/watch?v=QnQe0xW_JY4`
    const data = await axios.get(videoURL);
    console.log(data);
}

CORS 是网站(在本例中为 YouTube)阻止其他域访问它们的一种方式。基本上,在这种情况下,其他域 上的脚本 运行 将无法访问 youtube.com.

CORS 仅由浏览器强制执行,因此您的 Node 脚本可以按预期工作而您的 React 应用程序不会。

Here's 很好地解释了 CORS 的工作原理。

您可以使用简单的 Node 代理解决此问题:

import express from "express";
import axios from "axios";

const app = express();

app.get("/proxy", async (req, res) => {
  const resp = await axios.get(req.query.url);

  res.send(resp.data);
});

app.listen(process.env.PORT || 3000);