如何解决从CORS策略阻止从源“ http:// localhost:4200”访问“ http:// localhost:8080 / BeginSignup”处的访问
我正在尝试将提取POST请求发送到我的Golang AppEngine API。但是,我收到了CORS政策错误,也不知道为什么。这是我的代码:
private async sendHTTPPut(data: UserInfo,func: string) {
let requestHeaders = { 'Content-Type': 'application/json','Access-Control-Allow-Origin': '*' } as HeadersInit;
console.log(requestHeaders)
return await fetch(
this.endpoint + func,{
method: 'POST',headers: requestHeaders,body: JSON.stringify(data),mode: "cors"
}
)
}
这是处理CORS的服务器代码:
func StartApp() {
router = mux.NewRouter()
router.HandleFunc("/",hello)
router.HandleFunc("/hello",hello)
router.HandleFunc("/AcceptMember",AcceptMember)
router.HandleFunc("/CreateTeam",CreateTeam)
router.HandleFunc("/Leave",Leave)
router.HandleFunc("/InviteMember",InviteMember)
router.HandleFunc("/BeginSignup",BeginSignup)
router.HandleFunc("/ProcessSignup",ProcessSignup)
router.HandleFunc("/CompleteSignup",CompleteSignup)
// Scoring
router.HandleFunc("/GetLocalscore",GetLocalscore)
allowedOrigins := handlers.AllowedOrigins([]string { "* always" })
allowedHeaders := handlers.AllowedHeaders([]string { "Content-Type" })
if err := http.ListenAndServe(":8080",handlers.CORS(allowedOrigins,allowedHeaders)(router)); err != nil {
log.Fatal(err)
}
}
这是发送到服务器的请求:
Request URL: http://localhost:8080/BeginSignup
Referrer Policy: no-referrer-when-downgrade
Provisional headers are shown
Access-Control-Allow-Origin: *
Content-Type: application/json
Referer: http://localhost:4200/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.68
PAYLOAD
{member: {phoneNum: "0648503047"},…}
member: {phoneNum: "0648503047"}
score: null
team: {teamName: ".None",teamMembers: ["0648503047"],teamleader: "0648503047"}
这是从服务器发送回的响应:
Request URL: http://localhost:8080/BeginSignup
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: [::1]:8080
Referrer Policy: no-referrer-when-downgrade
Content-Length: 0
Date: Mon,05 Oct 2020 20:34:51 GMT
Accept: */*
Accept-Encoding: gzip,deflate,br
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: access-control-allow-origin,content-type
Access-Control-Request-Method: POST
Connection: keep-alive
Host: localhost:8080
Origin: http://localhost:4200
Referer: http://localhost:4200/
Sec-Fetch-Dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.68
解决方法
我假设您正在开发模式(ng serve
)中运行角度。
在这种情况下,CORS错误来自角度。
您必须添加一个proxy.conf.json,其中包含src中不同端点的条目:
{
"/api/*": {
"target": "http://localhost:<your-port>","secure": false,"logLevel": "debug"
}
}
并在您的angular.json中引用此文件:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server","options": {
"browserTarget": "<your-app>:build","proxyConfig": "src/proxy.conf.json"
},...
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。