登录
首页 >  Golang >  Go问答

处理 DELETE 请求的 Gorilla 预检请求方法

来源:stackoverflow

时间:2024-03-16 11:45:32 435浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

在使用 Gorilla Web Toolkit 处理 CORS 预检请求时,遇到使用 DELETE 方法失败的问题。预检调用失败,返回 CORS 错误,随后的 DELETE 调用返回 405(“方法不允许”)。通过更新 CORS 调用,添加 AllowedHeaders 项,解决了这个问题,从而允许在预检请求中发送正确的 CORS 标头。

问题内容

我使用 gorilla web toolkit 编写了一个简单的 api,通过其处理程序处理 cors 答案:

r := mux.newrouter()
r.handlefunc("/api/note", readhandler).methods("get")
r.handlefunc("/api/note", writehandler).methods("post")
r.handlefunc("/api/note", deletehandler).methods("delete")
r.handlefunc("/api/note", optionshandler).methods("options")

optionshandler 是

func optionsHandler(_ http.ResponseWriter, _ *http.Request) {
    return
}

我这样做的理由是预检调用将使用 options 但它唯一感兴趣的是相关的 cors 标头。

getpost 工作正常,javascript fetch() 调用使用正确的标头。

delete 但是在 preflight 调用上失败:chrome devtools 指出 delete + preflight 调用失败并出现 cors 错误 ,下一行是 preflight options 调用失败并出现 405(“方法不允许”)

为什么在处理该方法时会出现此错误?又该如何解决呢?


正确答案


我通过更新 cors() 调用解决了该问题:

methods := handlers.AllowedMethods([]string{"OPTIONS", "DELETE", "GET", "HEAD", "POST", "PUT", "PATCH"})
origins := handlers.AllowedOrigins([]string{"*"})
headers := handlers.AllowedHeaders([]string{"Content-Type"})
log.Fatal(http.ListenAndServe("127.0.0.42:80", handlers.CORS(methods, origins, headers)(r)))

我认为(但我不确定)真正修复该调用的是 headers 条目。

理论要掌握,实操不能落!以上关于《处理 DELETE 请求的 Gorilla 预检请求方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>