Maison > développement back-end > Golang > le corps du texte

Pourquoi l'erreur cors n'est-elle pas résolue ?

PHPz
Libérer: 2024-02-06 10:09:11
avant
685 Les gens l'ont consulté

为什么 cors 错误没有得到解决?

Contenu de la question

Les cors sont autorisés en golang, le code est le suivant

func register() *echo.echo {
    e := echo.new()
    e.get("/swagger/*", echoswagger.wraphandler) // swagger 등록
    validator.registervalidator(e)               // 유효성검사 등록
    e.use(middleware.cors())  // cors 등록
......

package middleware

import (
    "github.com/labstack/echo/v4"
    "github.com/labstack/echo/v4/middleware"
)

func cors() echo.middlewarefunc {
    return middleware.corswithconfig(middleware.corsconfig{
        alloworigins:  []string{"http://localhost:3000"},
        allowmethods:  []string{echo.get, echo.put, echo.post, echo.delete},
        allowheaders:  []string{echo.headerorigin, echo.headercontenttype, echo.headeraccept},
        exposeheaders: []string{echo.headercontentlength},
    })
}
Copier après la connexion

Mais même si j'envoie une requête depuis (localhost:3000) dans le projet React, l'erreur cors ne s'arrête pas.

func (serverInfo *ServerInfo) ServerStart() {

    var databaseSet database.DatabaseInterface = &mysql.MysqlInfo{} // Database
    databaseSet.InitDatabase()                                      // 데이터베이스를 초기화합니다
    hosts := map[string]*Host{}                                     // Hosts

    // API
    hosts[fmt.Sprintf("%v.%v:%v", "api.v1", os.Getenv(envkey.SERVER_URL), os.Getenv(envkey.PORT))] = &Host{apiV1Route.Register()}

    // Server
    e := echo.New()
    e.Use(middleware.Logger()) // 로거등록

    e.Any("/*", func(c echo.Context) (err error) {
        req := c.Request()
        res := c.Response()
        host := hosts[req.Host]

        if host == nil {
            err = echo.ErrNotFound
        } else {
            host.Echo.ServeHTTP(res, req)
        }
        return
    })

    // e.Logger.Fatal(e.StartTLS(fmt.Sprintf(":%v", os.Getenv(envkey.PORT)), "housewhale.com+3.pem", "housewhale.com+3-key.pem"))
    e.Logger.Fatal(e.Start(fmt.Sprintf(":%v", os.Getenv(envkey.PORT))))
}
Copier après la connexion

Je suis troublé par ce problème depuis plusieurs jours. Comment le résoudre ? J'ai essayé tout ce que j'ai trouvé dans le manuel ou sur Google mais l'erreur cors ne disparaît pas.


Réponse correcte


Il y a eu une erreur, aucune erreur n'était jointe, j'ai joint l'erreur suivante et le problème a été résolu à ce moment-là.

access to fetch at 'https://api.v1.localhsot:8081/auth/retoken' 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. if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with cors disabled.
Copier après la connexion

Les Cors ne sont pas autorisés correctement côté serveur, veuillez configurer le côté serveur pour qu'il corresponde à la demande

Par exemple, si le client envoie des données d'autorisation à l'en-tête, le serveur autorise également l'autorisation dans l'en-tête. Configurez les requêtes nécessaires comme ceci

package middleware

import (
    "github.com/labstack/echo/v4"
    "github.com/labstack/echo/v4/middleware"
)

func Cors() echo.MiddlewareFunc {
    return middleware.CORSWithConfig(middleware.CORSConfig{
        AllowOrigins:     []string{"http://localhost:3000"},
        AllowMethods:     []string{echo.GET, echo.PUT, echo.POST, echo.DELETE},
        AllowHeaders:     []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept, echo.HeaderAuthorization},
        ExposeHeaders:    []string{echo.HeaderContentLength, echo.HeaderSetCookie},
        AllowCredentials: true, // Add this line to allow credentials
    })
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!