Cors dibenarkan dalam golang, kodnya adalah seperti berikut
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}, }) }
Tetapi walaupun saya menghantar permintaan daripada (localhost:3000) dalam projek reaksi, ralat cors tidak berhenti.
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)))) }
Saya telah bermasalah dengan masalah ini selama beberapa hari. Bagaimana untuk menyelesaikannya? Saya telah mencuba semua yang saya temui dalam manual atau di google tetapi ralat cors tidak hilang.
Terdapat ralat, tiada ralat yang dilampirkan, saya lampirkan ralat berikut dan masalah telah diselesaikan pada masa itu.
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 tidak dibenarkan dengan betul di bahagian pelayan, sila konfigurasikan bahagian pelayan agar sepadan dengan permintaan
Sebagai contoh, jika pelanggan menghantar data kebenaran kepada pengepala, pelayan membenarkan kebenaran dalam pengepala juga. Sediakan permintaan yang diperlukan seperti ini
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 }) }
Atas ialah kandungan terperinci Mengapa ralat cors tidak diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!