thinkjs框架 跨域请求、OPTIONS预请求解决方法

环境:nodeJs项目用thinkjs框架写的,前端ajax请求。
问题:前端ajax跨域请求nodeJs项目,浏览器报错。显示OPTIONS预请求到后端,因为后端没有处理OPTIONS请求,所以报500错误。后面紧跟着真正请求(post/get等)浏览器控制台报跨域的错误。报错信息如下图

解决方法: 请求头设置Access-Control-Allow-Origin:“*”。具体代码:base.js
 

module.exports = class extends think.Controller {

    async __before() {

      //配置跨域

        this.header("Access-Control-Allow-Origin", this.header("origin") || "*");

        //允许请求头参数进入

        this.header("Access-Control-Allow-Headers", "x-requested-with");

        //处理预请求,给body设置一个值,否则会包404

         if(this.method === "OPTIONS"){

             this.ctx.body = 200;

             return false;

         }

    }

};

注意:如果前端请求头里面设置了field,这里也要设置"Access-Control-Allow-Headers", "x-requested-with" 。其中x-requested-with 是前端请求头设置的field。

你可能感兴趣的:(thinkjs)