javascript - 来自 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 */
解决方案
CORS 检查是一种浏览器安全功能。这就是它在 Node.js 中工作但在浏览器中不工作的原因。
“CORS 机制支持浏览器和服务器之间的安全跨域请求和数据传输。现代浏览器在 XMLHttpRequest 或 Fetch 等 API 中使用 CORS 来降低跨域 HTTP 请求的风险。” MDN
推荐阅读
- git - Git 流程和功能分支的同步
- c - 如何将两个子 fork 进程与共享内存和信号量同步?
- python - BayesSearchCV - lightgbm - 提前停止 - “ValueError:没有足够的值来解压”
- node.js - 如何将node.js目录中的文件内容发送到客户端
- javascript - 为什么我在 npm start 上收到以下错误
- python - vscode python重构失败
- python - 如何有条件地替换熊猫数据框列中的子字符串?
- reactjs - 在本机反应中中止获取请求:无法执行反应状态更新
- laravel - Laravel passport creating a oauth_client with userid not with php artisan passport:client --password
- pointers - 切片结构行为