0

我正在使用 Gin-gonic 创建 API。所有请求,无论是 GET 还是 POST 都将采用 JSON 格式。

我有一个运行良好的 API 调用,但我必须通过 cURL 添加这些标头,-H "Accept: application/json" -H "Content-type: application/json"否则 POST 无法按预期工作。

我尝试将此功能添加为中间件,但尽管它稍微更改了标题但仍然无法按预期工作

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {

        c.Writer.Header().Set("Content-Type", "application/json")
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")

    }
}

工作时的标题(在 cURL 中添加了标题): Accept: application/json Content-type: application/json

不起作用时的标头(cURL 中没有标头):Accept: */* Content-Type: application/x-www-form-urlencoded

有没有办法强制标题而不是要求用户提供它们?

4

1 回答 1

1

Content-type是一个导入 HTTP 标头,让服务器决定如何解析 HTTP 正文。

有没有办法强制标题而不是要求用户提供它们?

很难说是或否,这取决于您的“用户”。对于 curl,它无法猜测 HTTP 正文格式并自动将 Content-Type 设置为 'application/json',因此您需要指定 Content-Type。对于像jQuery这样的其他人,程序员可以设置dataTypein postjQuery.post( url [, data ] [, success ] [, dataType ] ) 链接

于 2015-06-09T05:56:56.970 回答