Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wird der Cors-Fehler nicht behoben?

Warum wird der Cors-Fehler nicht behoben?

PHPz
PHPznach vorne
2024-02-06 10:09:11700Durchsuche

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

Frageninhalt

Cors ist in Golang erlaubt, der Code lautet wie folgt

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},
    })
}

Aber selbst wenn ich eine Anfrage von (localhost:3000) im Reaktionsprojekt sende, hört der Cors-Fehler nicht auf.

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

Ich habe seit mehreren Tagen mit diesem Problem zu kämpfen. Wie kann ich es lösen? Ich habe alles versucht, was ich im Handbuch oder auf Google gefunden habe, aber der Cors-Fehler verschwindet nicht.


Richtige Antwort


Es ist ein Fehler aufgetreten, es war kein Fehler angehängt, ich habe den folgenden Fehler angehängt und das Problem wurde zu diesem Zeitpunkt gelöst.

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.

Cors ist auf der Serverseite nicht korrekt zulässig, bitte konfigurieren Sie die Serverseite so, dass sie der Anfrage entspricht

Wenn der Client beispielsweise Autorisierungsdaten an den Header sendet, lässt der Server auch die Autorisierung im Header zu. Richten Sie die notwendigen Anfragen so ein

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

Das obige ist der detaillierte Inhalt vonWarum wird der Cors-Fehler nicht behoben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was entweicht in den Haufen?Nächster Artikel:Was entweicht in den Haufen?