我正在尝试在Go Web服务器中设置标题.我正在使用gorilla/mux和net/http打包.
我想设置Access-Control-Allow-Origin: *允许跨域AJAX.
这是我的Go代码:
func saveHandler(w http.ResponseWriter, r *http.Request) {
// do some stuff with the request data
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/save", saveHandler)
http.Handle("/", r)
http.ListenAndServe(":"+port, nil)
}
Run Code Online (Sandbox Code Playgroud)
该net/http软件包包含描述发送http请求标头的文档,就像它是客户端一样 - 我不确定如何设置响应标头?
这是我的第一篇文章.
我刚刚开始学习Go和Angular,我正在尝试将角度应用程序连接到go api.我已经写过这两篇文章而且很难找出问题的根源.我认为这是一个CORS问题,但如果我不在Angular http请求中包含代码标题行,它可以正常工作.此时我只是想添加标题.授权代码尚未实现.
这两个应用程序都在本地运行,端口5000上的Go应用程序和4200上的Angular
Angular http请求不起作用:
this.http.get<ProjectedBalance>(requestUrl, {headers: new HttpHeaders().set('Authorization', 'my-auth-token')})
.subscribe(data => {
this.projBalance = data.projBalance;
}
Run Code Online (Sandbox Code Playgroud)
有效的Angular http请求:
this.http.get<ProjectedBalance>(requestUrl)
.subscribe(data => {
this.projBalance = data.projBalance;
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:4200 '访问.响应具有HTTP状态代码403
我在我的代码中使用gorilla/mux和gorilla/handlers
router := mux.NewRouter()
router.HandleFunc("/home/{endDate}", GetProjBalance).Methods("GET", "OPTIONS")
headersOk := handlers.AllowedHeaders([]string{"X-Requested-With, Content-Type, Authorization"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
//start server on port
log.Fatal(http.ListenAndServe(":5000", handlers.CORS(originsOk, headersOk, methodsOk)(router)))
Run Code Online (Sandbox Code Playgroud)
来自Chrome Dev Tools的标题
Request URL:http://localhost:5000/home/2020-12-21
Request Method:OPTIONS
Status Code:403 Forbidden
Remote Address:[::1]:5000
Referrer Policy:no-referrer-when-downgrade
Response Headers …Run Code Online (Sandbox Code Playgroud)