728x90

참고영상 : Como Programar uma API REST em Golang Parte 7 - HANDLERS CORS - Iniciando um Projeto Angular # 24

 

더보기

Go 세팅

별도의 go 라이브러리를 추가 세팅

cd workspace/go/src
go get -u github.com/gorilla/handlers
cd go_server

 

main.go 수정

* CORS 추가

package main

import ( 
	...
    
	"github.com/gorilla/handlers" // 추가
)

type User struct { ... }

var users = []User{ ... }

type Response struct { ... }

func NewResponse(method, message string, status int) Response { ... }

func HttpInfo(r *http.Request) { ... }

func setJsonHeader(w http.ResponseWriter) { ... }

func main() {
	fmt.Println("Api Connected Port 3000....")

	r := mux.NewRouter().StrictSlash(true)

	// 추가
	headers := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"})
	methods := handlers.AllowedMethods([]string{"GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS"})
	origins := handlers.AllowedOrigins([]string{"*"})

	r.HandleFunc("/users", getUsers).Methods("GET")
	r.HandleFunc("/users/{id}", getUser).Methods("GET")
	r.HandleFunc("/users", postUser).Methods("POST")
	r.HandleFunc("/users/{id}", putUser).Methods(("PUT"))
	r.HandleFunc("/users/{id}", deleteUser).Methods(("DELETE"))

	// 수정
	//log.Fatal(http.ListenAndServe(":3000", r))
	log.Fatal(http.ListenAndServe(":3000", handlers.CORS(headers, methods, origins)(r)))
}

func getUsers(w http.ResponseWriter, r *http.Request) {
	...
}

func getUser(w http.ResponseWriter, r *http.Request) {
	...
}

func postUser(w http.ResponseWriter, r *http.Request) {
	...
}

func putUser(w http.ResponseWriter, r *http.Request) {
	...
}

func deleteUser(w http.ResponseWriter, r *http.Request) {
	...
}

 

headers := handlers.AllowedHeaders([]string{"X-Request", "Content-Tyoe", "Authorization"})

methods := handlers.AllowedHeaders([]string{"GET", "POST", "PUT", "DELETE"})

origins := handlers.AllowedHeaders([]string{"*"})

CORS 핸들러를 만들 때에 Origins, Methods, Headers에 대한 옵션을 지정.

 

log.Fatal(http.ListenAndServe(":3000", handlers.CORS(headers, methods, origins)(r)))

위 옵션으로 http 요청에 CORS를 적용하며, 해당 핸들러를 기반으로 3000 포트 서버를 구동합니다.

728x90
Posted by 게으른거북
: