Go의 프레임 워크 "echo"에서 CORS를 설정합니다.
개요
프론트 측은 포트 번호 8080
, 서버 측 측은 포트 번호 8008
다음 오류 발생시 Chrome의 콘솔 부분
![](https://s1.md5.ltd/image/d9b303da348fc98e88581f3c091407ef.png)
서버측 샘플 코드
간단히 파라미터 name
※실제로는 토큰등도 필요합니다만 여기에서는 할애합니다
main.gopackage main
import (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo"
)
func main() {
e := echo.New()
e.POST("/task", task)
e.Start(":8008")
}
type TaskParam struct {
TaskName string `json:"name"`
}
func dbConnect() *sql.DB {
db, err := sql.Open("mysql", "root:your_db_password/your_db_name")
if err != nil {
panic(err.Error())
}
return db
}
func task(c echo.Context) error {
param := new(TaskParam)
if err := c.Bind(param); err != nil {
return err
}
db := dbConnect()
// insert
ins, err := db.Prepare("INSERT INTO tasks(name) VALUES(?)")
if err != nil {
log.Fatal(err)
panic(err.Error())
}
ins.Exec(param.TaskName)
defer db.Close()
return c.HTML(http.StatusOK, "INSERT OK")
}
일반 CORS 설정
단순한 POST
라든지 tasks
, GET
, POST
를 허가시키는 경우는 이하와 같이 PUT
main.gofunc main() {
e := echo.New()
// CORSの設定追加
e.Use(middleware.CORS())
e.POST("/task", task)
e.Start(":8008")
}
DELETE
에 e.Use(middleware.CORS())
를 다음과 같이 추가
main.goimport (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo/middleware" // 自動追加されてなければ追加する
"github.com/labstack/echo"
)
엄격한 CORS 설정
아직 시도하지 않았지만 공식 문서에 다음 코드를 추가하고 import
와 github.com/labstack/echo/middleware
를 올바르게 설정하여 다른 도메인간에 상호 작용할 수 있도록 설정할 수있는 것 같습니다.
main.gofunc main() {
e := echo.New()
// 厳密にCORSを設定する(以下公式のサンプルコード)
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"https://labstack.com", "https://labstack.net"},
AllowMethods: []string{http.MethodGet, http.MethodPut, http.MethodPost, http.MethodDelete},
}))
e.POST("/task", task)
e.Start(":8008")
}
type TaskParam struct {
TaskName string `json:"name"`
}
참고 URL
간단히 파라미터
name
※실제로는 토큰등도 필요합니다만 여기에서는 할애합니다main.go
package main
import (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo"
)
func main() {
e := echo.New()
e.POST("/task", task)
e.Start(":8008")
}
type TaskParam struct {
TaskName string `json:"name"`
}
func dbConnect() *sql.DB {
db, err := sql.Open("mysql", "root:your_db_password/your_db_name")
if err != nil {
panic(err.Error())
}
return db
}
func task(c echo.Context) error {
param := new(TaskParam)
if err := c.Bind(param); err != nil {
return err
}
db := dbConnect()
// insert
ins, err := db.Prepare("INSERT INTO tasks(name) VALUES(?)")
if err != nil {
log.Fatal(err)
panic(err.Error())
}
ins.Exec(param.TaskName)
defer db.Close()
return c.HTML(http.StatusOK, "INSERT OK")
}
일반 CORS 설정
단순한 POST
라든지 tasks
, GET
, POST
를 허가시키는 경우는 이하와 같이 PUT
main.gofunc main() {
e := echo.New()
// CORSの設定追加
e.Use(middleware.CORS())
e.POST("/task", task)
e.Start(":8008")
}
DELETE
에 e.Use(middleware.CORS())
를 다음과 같이 추가
main.goimport (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo/middleware" // 自動追加されてなければ追加する
"github.com/labstack/echo"
)
엄격한 CORS 설정
아직 시도하지 않았지만 공식 문서에 다음 코드를 추가하고 import
와 github.com/labstack/echo/middleware
를 올바르게 설정하여 다른 도메인간에 상호 작용할 수 있도록 설정할 수있는 것 같습니다.
main.gofunc main() {
e := echo.New()
// 厳密にCORSを設定する(以下公式のサンプルコード)
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"https://labstack.com", "https://labstack.net"},
AllowMethods: []string{http.MethodGet, http.MethodPut, http.MethodPost, http.MethodDelete},
}))
e.POST("/task", task)
e.Start(":8008")
}
type TaskParam struct {
TaskName string `json:"name"`
}
참고 URL
func main() {
e := echo.New()
// CORSの設定追加
e.Use(middleware.CORS())
e.POST("/task", task)
e.Start(":8008")
}
import (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo/middleware" // 自動追加されてなければ追加する
"github.com/labstack/echo"
)
아직 시도하지 않았지만 공식 문서에 다음 코드를 추가하고
import
와 github.com/labstack/echo/middleware
를 올바르게 설정하여 다른 도메인간에 상호 작용할 수 있도록 설정할 수있는 것 같습니다.main.go
func main() {
e := echo.New()
// 厳密にCORSを設定する(以下公式のサンプルコード)
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"https://labstack.com", "https://labstack.net"},
AllowMethods: []string{http.MethodGet, http.MethodPut, http.MethodPost, http.MethodDelete},
}))
e.POST("/task", task)
e.Start(":8008")
}
type TaskParam struct {
TaskName string `json:"name"`
}
참고 URL
Reference
이 문제에 관하여(Go의 프레임 워크 "echo"에서 CORS를 설정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sola-msr/items/828e2eb45cf05b1a2ad4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)