登录
首页 >  Golang >  Go问答

即使使用 middleware.CORS() 也没有获得“Access-Control-Allow-Origin”标头

来源:stackoverflow

时间:2024-04-08 11:36:34 247浏览 收藏

哈喽!今天心血来潮给大家带来了《即使使用 middleware.CORS() 也没有获得“Access-Control-Allow-Origin”标头》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我的 api 使用 echo 框架提供服务。当我从 react 应用程序执行 fetch 调用时,我得到

access to fetch at 'http://localhost:8080/myapi' from origin 'http://localhost:3000' has been blocked by cors policy: response to preflight request doesn't pass access control check: no 'access-control-allow-origin' header is present on the requested resource

即使我像这样设置 echo:

srv := echo.new()
    srv.hidebanner = true
    srv.use(middleware.logger())

    srv.use(middleware.cors())

我尝试了以下方法,但得到了相同的结果:

var (
    // DefaultCORSConfig is the default CORS middleware config.
    DefaultCORSConfig = middleware.CORSConfig{
        Skipper:      middleware.DefaultSkipper,
        AllowOrigins: []string{"*"},
        AllowMethods: []string{http.MethodGet, http.MethodHead, http.MethodPut, http.MethodPatch, http.MethodPost, http.MethodDelete, http.MethodOptions},
        AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept, echo.HeaderAccessControlAllowOrigin, echo.HeaderAccessControlAllowMethods},
    }
)

srv.Use(middleware.CORSWithConfig(DefaultCORSConfig))

在响应中,我没有看到 access-control-allow-origin 标头。即使我将 localhost:3000 放入 alloworigins 中,我也会得到相同的结果


正确答案


问题是 echo.New() 在代码中的其他地方再次被调用,从而消除了对 srv.Use(middleware.CORS()) 的调用,这就是允许跨源调用所需的全部内容.

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>