电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue axios與Go Frame后端框架的Options請求跨域問題詳解

瀏覽:97日期:2023-02-03 17:53:49

跨域問題可從前后兩端分開排查:

前端:Vue + axios

axios 請求頭使用 ’Content-Type’: ’application/json’,

并且在Header中設置了 Authorization 字段用于傳遞 Token,

參數未經 Qs 轉碼,

使用以下代碼測試登錄接口:

// 為方便操作,已將 axios 實例掛載到 this.$axios 上this.$axios.post(’/signin’, {account: ’’, password: ’’}) .then(res => { console.log(’成功:’, res) }) .catch(err => { console.log(’失敗: ’, err) })

出現如下錯誤:

Access to XMLHttpRequest at ’http://127.0.0.1:8080/api/v1/signin’ from origin ’http://localhost:8081’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: It does not have HTTP ok status.

同時 POST 請求變成了 OPTIONS 請求,并且返回404,如下圖:

Vue axios與Go Frame后端框架的Options請求跨域問題詳解

這里有兩個問題,一個是為什么 POST 變成了 OPTIONS?URL 路徑沒錯,為什么又會返回 404?

POST 變 OPTIONS 問題涉及復雜跨域請求,符合以下任意一個條件的請求就算復雜請求:

使用了除 HEAD、GET、POST之外的請求方法; 頭部字段不超出 Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type,并且 Content-Type 的值只限于 application/x-www-form-urlencoded、multipart/form-data、text/plain;

由于設置的 Authorization 字段,Content-Type 也設置為了 application/json,因此這個請求算復雜跨域請求,會在正式通信前增加一次 OPTIONS 查詢請求,稱為'預檢'請求(preflight request),用于向服務器請求權限等信息,預檢請求被成功響應后,才會發出真實的 POST 請求。

可為什么 OPTIONS 請求返回 404 呢?通過上面的錯誤說明及分析,答案應該很清晰了,就是服務端路由未對 OPTIONS 類型請求做出響應,導致 404 的情況。

后端:GoFrame

GoFrame 的路由代碼如下:

func init() { s := g.Server() // 綁定 CORS 中間件 s.BindMiddleware('/api/*', middleware.CORS) s.Group('/api', func(group *ghttp.RouterGroup) { ... // 重點:此路由僅支持 POST group.POST('/signin', userController, 'SignIn') }}

/signin 的路由指定了請求方式為 POST,自然無法響應其他類型的請求,使用如下方式定義倒是可響應所有類型的請求:

group.ALL('/signin', userController, 'SignIn')

這樣就使該路由支持所有的請求方法,但需要在控制器的 SignIn 方法中做判斷需要響應哪些類型的請求,很繁瑣,不推薦此方式。

其實只要在 CORS 中間件中對 OPTIONS 請求做統一響應即可,上代碼:

// CORS 允許接口跨域請求func CORS(r *ghttp.Request) { // 使用框架默認的 CORS 設置 r.Response.CORSDefault() if r.Method == 'OPTIONS' { r.Response.WriteStatusExit(http.StatusOK) } else { r.Middleware.Next() }}

另外需要注意的是,使用 GoFrame 框架,CORS 中間件要在全局添加,如果在路由組中添加,同樣會出現 OPTIONS 請求 404 的情況,而且中間件的代碼在請求過程中未執行,原因暫不清楚,還需要多了解下框架。

本文描述的跨域問題是在網頁上使用 Vue + axios 時出現的,使用 Postman 工具調試則一切正常,這里記錄下排查過程和解決方法,希望能幫到有需要的童鞋,有任何問題可以在評論里一起討論下。

到此這篇關于Vue axios與Go Frame后端框架的Options請求跨域問題詳解的文章就介紹到這了,更多相關Vue axios與Go Frame跨域內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: IOS
相關文章:
主站蜘蛛池模板: HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 最新范文网_实用的精品范文美文网| 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓| 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 浙江宝泉阀门有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 泰州物流公司_泰州货运公司_泰州物流专线-东鑫物流公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 |