在 localhost:8080 上运行的服务器从在 9090 上运行的前端获取 CORS

我有一个在 localhost:8080 上运行的 API 服务器 (gin-gonic)。所有典型的 CORS-Header 都设置为调试:当我尝试使用简单的前端 (swagger-ui) 测试 API 时,出现 CORS 错误。(招摇在本地主机上运行:9090)

当一切都在同一个域上运行时,它会起作用。

c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Headers", "*")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")

为什么这不起作用。难道这 3 条线不能解决所有 CORS 问题吗?

我对实际解释而不是简单的解决方案非常好奇。欢迎所有与此相关的资源(或有关 CORS 的好资源)。

它在 Postman 或 CURL 中运行良好

浏览器中的错误消息:

http://img.mukewang.com/646b32ab000162de06560044.jpg

跃然一笑
浏览 144回答 1
1回答

偶然的你

当您将 OPTION 作为 Preflight 请求捕获时,您的服务器应该返回成功。我在您提供的代码中找不到回报。您也可以尝试使用https://github.com/rs/corspackage mainimport (    "net/http"    "github.com/gin-gonic/gin"    cors "github.com/rs/cors/wrapper/gin")func main() {    router := gin.Default()    router.Use(cors.Default())    router.GET("/", func(context *gin.Context) {        context.JSON(http.StatusOK, gin.H{"hello": "world"})    })    router.Run(":8080")}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go