最近換了份工做,離開了惟品會,想不到新的工做第一份任務仍是作管理系統,真憂傷~node
新的管理系統是先後端代碼分離的,還搞了不一樣的域,真操蛋,webpack
本地開發階段仍是比較愉快的,在webpack配置proxy便可,配置以下web
let context = ['/auth', '/myAccount', '/user', '/role', '/resource', '/task', '/enum', '/draft'] Config.devServer = { historyApiFallback: true, publicPath: '/static/', disableHostCheck: true, noInfo: true, hot: true, host: 'localhost', proxy: [{ context: context, target: 'http://11.112.0.100:9750', changeOrigin: true, secure: false }, { context: '/file', target: 'http://11.112.0.100:9742', changeOrigin: true, secure: false }], port: 8099, watchOptions: { poll: false, ignored: ['node_modules/**', 'config/**', 'common/**', 'dist/**'] }, headers: { 'Access-Control-Allow-Origin': '*' } };
剛開始後端還沒配置服務請求地址過濾,就報跨域限制了,在後端設置了cors以後,發現登陸請求發了兩次,json
並且第一次仍是options請求後端
而登陸跳轉其餘頁面全線報錯;跨域
看代碼並沒發現發了options請求,而是都發了post請求,瀏覽器
查了資料https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS發現是因爲請求都變成了複雜請求,瀏覽器機制是複雜請求先發options請求,返回2**以後app
纔會自動再發一次options請求的,cors
簡單請求須要符合post
一、get/post/head請求
二、content-type 爲text/plain、multipart/form-data、application/x-www-form-urlencoded
而因爲此係統是使用application/json作數據交互的,所以爲複雜請求,須要先發個options