为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
跃然一笑 2023-05-22 17:14:19
我有一个在 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 中运行良好浏览器中的错误消息:
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

当您将 OPTION 作为 Preflight 请求捕获时,您的服务器应该返回成功。我在您提供的代码中找不到回报。

您也可以尝试使用https://github.com/rs/cors

package main


import (

    "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")

}


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信