项目描述用Express搭建的服务在http://localhost:3000/开启,前端webpack-dev-server服务在http://localhost开启:3001/,然后从前端页面向后端接口发送删除和更新数据操作报如下错误:XMLHttpRequestcannotloadhttp://localhost:3000/comments/597c4ef56fd60ba4ff6ec54f。预检响应中的Access-Control-Allow-Methods不允许方法DELETE。概念说明CORS是一个W3C标准,全称是“跨源资源共享”(Cross-originresourcesharing)。它允许浏览器向跨域服务器发送XMLHttpRequest请求,从而克服AJAX只能在同源上使用的限制。为什么是跨域?当从与资源本身所在的服务器不同的域或端口请求资源时,资源会发起跨域HTTP请求。例如,站点http://domain-a.com的HTML页面通过的src请求http://domain-b.com/image.jpg。Web上的许多页面都加载来自不同域的资源,例如CSS样式表、图像和脚本。详细说明戳这里解决方案varexpress=require('express');varapp=express();varrouter=express.Router();varmongoose=require('mongoose');varComment=require('./model/comments');//设置跨域访问app.all('*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","X-Requested-With");res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");res。header("X-Powered-By",'3.2.1')??res.header("Content-Type","application/json;charset=utf-8");next();});//删除APIrouter.delete('/comments/:comment_id',function(req,res){Comment.remove({_id:req.params.comment_id},function(err,comment){if(err)res.send(err)res.json({message:'评论已被删除'})})})app.use('/',router);app.listen(3000);console.log('监听3000端口...');header中配置的意思在这里,这里是cors的模块:Node.jsCORS中间件(完)
