好久没写博客,最近忙于面试,认识到自身知识深度还不够,再继续好好专研学习了~
今天在做接口时,又碰到一个经典的问题,跨域,(在前后端分离的项目里,简直是必经之路),自己用原生的Ajax写请求,恩(Ajax不支持跨域),以node的express模块写接口,并借用了body-parser这个中间件,按照官网的文档要求,引入了这个中间件,并设置了相应的解析格式,但是在实现的过程中,发现通过
request.body.data //undefined
一直拿不到Json数据,很是纳闷,后来查找相应的资料,发现前端需要设置请求头为json数据格式,即
xmlHttp.setRequestHeader("Content-type","application/json");
结果这么一设置,呜呜,报错了
恩!注意到了 preflight request 网上一搜,发现是CORS的预请求,原来CORS的请求分为了简单请求和预请求。
CORS的简单请求里面规定:Content-type的值仅限于下列三者之一:
- text/plain
- multipart/form-data
- application/x0www-form-urlencoded
还有其他限制,这里就没列出来,搜了一下相应的解决方法,似乎可以用过滤器等去解决,但是博主觉得太过麻烦,准备来尝试nignx了。。若获取到了相应的数据,再来更新文章~