英文:
GoLang: Setting header to null for a file:// to http:// request not working
问题
这个问题涉及到在本地静态页面(file://)上使用Web服务器(http://)来提供文件,而不违反CORS。根据这个答案,可以使用一个Web服务器来为本地静态页面提供文件,而不违反CORS。根据这个答案,当从Web服务器发送数据到静态页面时,必须使用一个null
的头部。但是下面的两行代码都不起作用,所以我该怎么做呢?
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", nil) //这一行
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "")
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
第一段代码返回错误信息./main.go:42: cannot use nil as type string in argument to w.Header().Add
。
第二段代码可以编译通过,但是在客户端会抛出错误:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/aardvark/posts. (Reason: CORS header 'Access-Control-Allow-Origin' missing)
。
英文:
This answer about static to static (file:// -> file://) states that a webserver (http://) can be used to serve files to a local static page (file://) without violating CORS. And this answer states that when sending data from a webserver to a static page, a header of null
must be used. But neither of the two lines below are working, so how do I do it?
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", nil) //this line
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
returns the error ./main.go:42: cannot use nil as type string in argument to w.Header().Add
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "")
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
This compiles but throws the client side error: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/aardvark/posts. (Reason: CORS header 'Access-Control-Allow-Origin' missing)
答案1
得分: 2
在撰写这个问题之后,我想尝试最后一招,出于绝望,结果奏效了。
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "null")
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
你应该将字符串设置为"null"
,而不是空字符串""
或nil
。
如果你认为这个问题不适合在SO上发布,请留下评论,我会尽快删除它。
英文:
After writing up this question, I thought to try one last thing out of desperation, and it worked.
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "null")
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
You're supposed to set the string to "null"
, rather than a null string ""
or nil
If you don't think this question belongs on SO, please leave a comment and I'll promptly take it down.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论