首页 > 解决方案 > 来自 fetch 调用的 CORS 错误,但来自 NodeJS 没有

问题描述

我正在做一个有趣的小项目,我从一个 Node 脚本开始,使用 axios 对 API 进行 GET 调用。我让它工作了,并决定我想将它移动到一个普通的脚本中,以便在 html 文件中使用,所以我将它移动到<script></script>标签之间的一个 html 文件中,并进行了一些更改,使其在 ES6 中更清晰,就我而言知道不应该破坏任何东西,但现在我得到了错误(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)。根据我收集到的信息,这是服务器必须设置的,所以我无能为力。我只是不确定为什么它与 Node 一起工作?

这是我的代码的要点:
NodeJS:

axios('url_here')
    .then(data => {/* Some processing here */})

HTML文件中的独立JS:

const data = await (await fetch('url_here')).json();
/* Same processing here as what I did in Node */

标签: javascriptnode.jshttpgetcors

解决方案


CORS 检查是一种浏览器安全功能。这就是它在 Node.js 中工作但在浏览器中不工作的原因。

“CORS 机制支持浏览器和服务器之间的安全跨域请求和数据传输。现代浏览器在 XMLHttpRequest 或 Fetch 等 API 中使用 CORS 来降低跨域 HTTP 请求的风险。” MDN


推荐阅读