我正在尝试使用 json 请求通过服务器进行身份验证,但为了使服务器不抛出 400,我需要包含请求标头。
例如
curl -v -H "Content-Type: application/json; charset=utf-8" -d ‘{“Username”:”foo”,”Pw”:”bar”}’ http://localhost:port/Users/authenticatebyname
会抛出 400 错误,因为它没有所有请求标头。伴随着终端中的错误
curl: (3) URL using bad/illegal format or missing URL
但每当我尝试添加任何其他像这样的标题时
curl -v —H “Accept-Encoding: gzip, deflate” -H “Priority: u=1” -H "Content-Type: application/json; charset=utf-8" -d ‘{“Username”:”foo”,”Pw”:”bar”}’ http://localhost:port/Users/authenticatebyname
它将完全忽略接受编码和优先级标头,而是抛出回来
* Closing connection 0
curl: (6) Could not resolve host: —H
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
* Could not resolve host: deflate”
* Closing connection 1
curl: (6) Could not resolve host: deflate”
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
* Closing connection -1
curl: (3) URL using bad/illegal format or missing URL
然后抛出 400 错误
我不确定原始请求的内容类型标头格式是否错误,但如果我将其取出,它会抛出 415,因为它需要 json 请求。
我不知道为什么它不将其他标头识别为标头,并引发卷曲错误。
编辑:我将 URL 移到了 -v 前面,这样就消除了在没有请求标头的情况下发布时出现的第一个卷曲错误。使用请求标头,我仍然会遇到卷曲错误,并且它们无法按预期工作。
我在使用 400 时也遇到此错误
{"type":"https://tools.ietf.org/html/rfc9110#section-15.5.1","title":"One or more validation errors occurred.","status":400,"errors":{"$":["\u00270xE2\u0027 is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0."],"request":["The request field is required."]}
编辑2:我也尝试去掉撇号,比如用
“{/“Username/”:/”foo/”,/”Pw/”:/”bar/”}”
表示的 400 错误,但这也不起作用,并返回相同的错误
问题是我的标头和 json 请求中的引号类型错误,将它们替换为 ascii 引号让我可以使用请求标头和 json 数据包。