在Heroku部署后,出现错误"No 'Access-Control-Allow-Origin' header is present on the requested resource"。
在Heroku部署后,出现错误"No 'Access-Control-Allow-Origin' header is present on the requested resource"。
在本地主机上启动服务器时,没有出现任何错误。但是在部署到Heroku后,在某些特定路由上出现以下CORS错误:
请求的资源上不存在'Access-Control-Allow-Origin'头。因此,不允许访问来源'http://127.0.0.1:8080'。响应具有HTTP状态代码503。如果不透明响应符合您的需求,请将请求的模式设置为'no-cors'以禁用CORS获取资源。
我尝试了几乎所有方法来解决这个错误,我也尝试了在stackoverflow上找到的所有可能的解决方案,但都没有效果。
我的代码很简单:有一个登录函数,该函数发送请求到一个API端点,该端点确保管理员是否已验证。
我的服务器代码:(使用express js)
const expressApp = require('express'); const port = process.env.PORT || 3000; const cors = require('cors'); const express = expressApp(); const bodyParser = require('body-parser'); const session = require('express-session'); const adminRoutes = require('./admin/admin-routes'); const userRoutes = require('./users/user-routes'); const bookingRoutes = require('./booking/booking-routes'); const contactRoutes = require('./contact-us/contact-routes'); require('./dbConnection.js'); express.use(function (req, res, next) { console.log(req.headers); res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.header("Access-Control-Allow-Methods", "POST,DELETE,PUT,GET,OPTIONS"); res.header("Access-Control-Allow-Headers", req.headers['access-control-request-headers']); res.header("Access-Control-Request-Method", req.headers['access-control-request-method']); next(); });
客户端代码:
fetch(url, { method: "POST", password: this.password, body: JSON.stringify({ bodyData: { email } }), headers: { 'Access-Control-Allow-Origin': '*', "Content-Type": "application/json" } }).then(res => { return res.json() }).then(user => { // 这里有一些代码 }).catch(error => { console.log(error); })