ctx.Response.Header.Set 函数不适用于错误情况。
请检查以下代码,
package main
import "fmt"
import "github.com/valyala/fasthttp"
func main() {
requestHandler := func(ctx *fasthttp.RequestCtx) {
ctx.Response.Header.Set("Access-Control-Allow-Origin", "*")
switch string(ctx.Path()) {
case "/foo":
fmt.Fprintf(ctx, "Success result")
case "/bar":
ctx.Error("Unsupported path", fasthttp.StatusNotFound)
}
}
fasthttp.ListenAndServe(":8080", requestHandler)
}
/ foo网址的响应标题是,
服务器:fasthttp日期:星期一,2018年4月16日04:05:10 GMT
Content-Type:text / plain;字符集= UTF-8
内容长度:14
Access-Control-Allow-Origin:*
但是,/ bar的响应头是,
服务器:fasthttp
日期:星期一,2018年4月16日04:05:50 GMT
Content-Type:text / plain;字符集= UTF-8
内容长度:16
未应用Access-Control-Allow-Origin标头。我在这里错过了什么?
答案 0 :(得分:0)
方法ctx.Error
故意清除标题:
// ...
// Warning: this will reset the response headers and body already set!
func (ctx *RequestCtx) Error(msg string, statusCode int) {...}
解决方案是使用其他方法:
ctx.SetContentType("text/plain")
ctx.SetStatusCode(404)
ctx.SetBodyString("Unsupported path")