javascript 没有 'Access-Control-Allow-Origin' header 存在于 heroku 服务器请求的资源上
javascript No 'Access-Control-Allow-Origin' header is present on the requested resource with heroku server
我已经部署了一个 nodejs + express 服务器到 heroku,当我尝试使用它时我得到了错误 -
“从来源 'http://localhost:3000' 访问 'https://harel-shop-backend.herokuapp.com/auth/autologin' 处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态。”
在浏览器中。
这是我的 app.ts 代码 -
import './db/mongoose';
import HttpError from './model/http-error';
import cors from 'cors';
import authRoutes from './routes/auth.router';
import productRouter from './routes/product.router';
const app = express();
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization ,AuthorizationRefresh ,user'
);
res.setHeader(
'Access-Control-Allow-Methods',
'OPTIONS, GET, POST, PATCH, DELETE'
);
next();
});
app.use('/auth', authRoutes);
app.use('/products', productRouter);
app.use((req, res, next) => {
throw new HttpError('couldnt find this route', 404);
});
app.use((error: any, req: Request, res: Response, next: NextFunction) => {
if (res.headersSent) {
return next(error);
}
res.status(error.code || 500);
res.json({ message: error.message || 'an unknown error occurred' });
});
app.listen(3030, () => {
console.log('server is running');
});
我曾尝试在我的浏览器中安装扩展以禁用 cors 但没有成功,
我尝试添加 ('Access-Control-Allow-Origin', '*')
但也没有用。
安装了 cors 包并在第 10 行使用,也没有工作
所以我解决了这个问题,我做了两件事,
- 使用 npm build 创建了一个 dist 文件夹并添加了一个 Procfile 并在其中写入 -
web: node dist/app.js
- 我还在app.listen函数中添加了
process.env.PORT || 3030
我已经部署了一个 nodejs + express 服务器到 heroku,当我尝试使用它时我得到了错误 -
“从来源 'http://localhost:3000' 访问 'https://harel-shop-backend.herokuapp.com/auth/autologin' 处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态。”
在浏览器中。
这是我的 app.ts 代码 -
import './db/mongoose';
import HttpError from './model/http-error';
import cors from 'cors';
import authRoutes from './routes/auth.router';
import productRouter from './routes/product.router';
const app = express();
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization ,AuthorizationRefresh ,user'
);
res.setHeader(
'Access-Control-Allow-Methods',
'OPTIONS, GET, POST, PATCH, DELETE'
);
next();
});
app.use('/auth', authRoutes);
app.use('/products', productRouter);
app.use((req, res, next) => {
throw new HttpError('couldnt find this route', 404);
});
app.use((error: any, req: Request, res: Response, next: NextFunction) => {
if (res.headersSent) {
return next(error);
}
res.status(error.code || 500);
res.json({ message: error.message || 'an unknown error occurred' });
});
app.listen(3030, () => {
console.log('server is running');
});
我曾尝试在我的浏览器中安装扩展以禁用 cors 但没有成功,
我尝试添加 ('Access-Control-Allow-Origin', '*')
但也没有用。
安装了 cors 包并在第 10 行使用,也没有工作
所以我解决了这个问题,我做了两件事,
- 使用 npm build 创建了一个 dist 文件夹并添加了一个 Procfile 并在其中写入 -
web: node dist/app.js
- 我还在app.listen函数中添加了
process.env.PORT || 3030