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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章