我试图允许从任何地方访问。
我尝试使用应用中间件:
app.use(function (req, res, next) { res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader('Access-Control-Allow-Methods', '*'); res.setHeader("Access-Control-Allow-Headers", "*"); next(); });
我已尝试在路线中使用它:
app.post('/login',function(req,res){ var login = req.body; var sess = req.session; if (!login.email && !login.pwd){ return res.status(401); } res.header("Access-Control-Allow-Origin", '*'); res.header("Access-Control-Allow-Headers", '*'); .... more code here
两者都不起作用。我不断收到错误消息:“对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。”
在服务器的更下方,我们对另一条路由使用了类似的代码,该代码有效:
app.post('/questar',function(req,res){ //allow xhr post from retireup domains var cors = { origin= "https://www.website.com"; }; res.header("Access-Control-Allow-Origin", cors.origin); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.type('application/json');
我无法区分代码之间的区别,但是只有一套有效。有什么想法吗?这似乎是一个不应该太复杂的问题。谢谢
在路由之前(而不是在路由内部)配置CORS内容。
在这里,像这样(来自enable-cors.org):
app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); app.get('/', function(req, res, next) { // Handle the get for this route }); app.post('/', function(req, res, next) { // Handle the post for this route });
我总是在Express + Angular应用中像这样配置它,并且效果很好。
希望能帮助到你。