gin跨域时Get,Post正常Put,Delete被阻止的问题解决 您所在的位置:网站首页 post请求跨域问题 gin跨域时Get,Post正常Put,Delete被阻止的问题解决

gin跨域时Get,Post正常Put,Delete被阻止的问题解决

2024-02-06 21:13| 来源: 网络整理| 查看: 265

问题表现

同一个项目请求同一个服务时,Get和Post请求正常,但是Put和Delete一直报跨域错误的问题

Access to XMLHttpRequest at 'http://127.0.0.1:8011/api/organization' from origin 'http://localhost:9527' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response. 解决方案

根据问题描述,很清楚是PUT方法不行,于是去查看服务端的跨域中间件, 发现没有在Header中明确指定Access-Control-Allow-Headers,于是添加Allow Methods的设置,, 以下是完整的跨域中间件:

package middleware import ( "net/http" "github.com/gin-gonic/gin" ) func CORSMiddleware() gin.HandlerFunc { return func(ctx *gin.Context) { ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*") ctx.Writer.Header().Set("Access-Control-Max-Age", "86400") ctx.Writer.Header().Set("Access-Control-Allow-Headers", "*") ctx.Writer.Header().Set("Access-Control-Allow-Methods", "*") //出问题是缺少这里 ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true") if ctx.Request.Method == http.MethodOptions { ctx.AbortWithStatus(200) } else { ctx.Next() } } } 反思

问题本身没有什么,但有意思的是过程,因为我先写的服务端,且确定加了跨域的中间件,且在写前端的时候,之前常用的Get和Post访问都没有出现跨域的问题,所以问题出现时,没有第一时间联系到时服务端的问题。 网上查了些信息,整体描述是因为Get和Post的方法是默认的,所以及时没有明确设置也可以通过,但是其他的方法就需要显示的设置。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有