为啥我的网站上突然出现“不存在 'Access-Control-Allow-Origin' 标头”错误?

Posted

技术标签:

【中文标题】为啥我的网站上突然出现“不存在 \'Access-Control-Allow-Origin\' 标头”错误?【英文标题】:Why am I suddenly getting a "No 'Access-Control-Allow-Origin' header is present" error on my website?为什么我的网站上突然出现“不存在 'Access-Control-Allow-Origin' 标头”错误? 【发布时间】:2020-09-09 22:54:49 【问题描述】:

我正在我的 DigitalOcean 服务器中创建服务器块,以便我可以从同一个 droplet 托管两个网站,我想我可以让它工作,但网站坏了。我在 VSCode 中打开我的代码并使用 npm start 和 nodemon 运行它,当我尝试从 Pokeapi 提取数据时出现此错误:

从源“http://localhost:3000”访问“https://pokeapi.co/api/v2/pokemon/charizard/”处的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

这与我在实时网站上遇到的错误相同。我花了最后几个小时试图弄清楚我能做些什么无济于事。我想知道这是 Pokeapi 的问题还是我的问题,因为我用手机访问了该网站,它运行良好。我真的很沮丧,因为我需要找到一份工作,而且我认为没有人愿意在网站损坏的情况下雇用我。如果有人想查看我的部分代码,我会展示它。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

在 Kasey Chang 的帮助下,我找到了解决办法。这是我的服务器文件顶部在修复之前的样子:

require('dotenv').config();
const CONNECTION_STRING, SESSION_SECRET, SERVER_PORT = process.env;
const express = require('express');
const app = express();
app.use(express.json());
const massive = require('massive');
const session = require('express-session');

我创建了自己的代理,所以现在看起来像这样:

require('dotenv').config();
const CONNECTION_STRING, SESSION_SECRET, SERVER_PORT = process.env;
const express = require('express');
const app = express();

app.use((req, res, next) => 
    res.header('Access-Control-Allow-Origin', '*');
    next();
);

app.use(express.json());
const massive = require('massive');
const session = require('express-session');

现在我的网站又可以正常工作了!我希望这对遇到同样问题的人有所帮助。

【讨论】:

以上是关于为啥我的网站上突然出现“不存在 'Access-Control-Allow-Origin' 标头”错误?的主要内容,如果未能解决你的问题,请参考以下文章

“mono.exe”是啥奇怪的文件,为啥会突然出现在我的电脑上?

为啥我的推文按钮不会出现在我的页面上?

为啥我的所有应用程序在通过云服务共享其中一个后突然开始崩溃并出现 EXC_CRASH(代码签名无效)?

为啥分页不起作用并在 wordpress 网站上出现 404 错误?

为啥我的标志没有出现在主页上? [关闭]

不需要的匿名链接出现在我的网站主页上