我正在尝试使用@actions/http-client从众所周知的端点(json.schemastore.org )获取 JSON 文件。该客户端出现错误,使用 cURL 尝试请求时出现相同错误:
$ curl --header "Accept: application/json" https://json.schemastore.org/eslintrc.json
The resource cannot be displayed because the file extension is not being accepted by your browser.
向请求添加Content-Type
标头会使其成功并返回 JSON 文件,但前提是它位于Accept
传递给 cURL 的列表中的标头之前(Accept: application/json;Content-Type: application/json
导致上述相同的错误):
curl --header "Content-Type: application/json;Accept: application/json" https://json.schemastore.org/eslintrc.json
如果我省略--header
cURL 的参数,请求也会成功:
curl https://json.schemastore.org/eslintrc.json
使用上述(无标头参数),cURL 正在发送此请求:
GET /eslintrc.json HTTP/1.1
Host: json.schemastore.org
User-Agent: curl/7.71.1
Accept: */*
json.schemastore.org
使用上述 cURL 命令(无标头参数)收到的响应标头是:
HTTP/1.1 200 OK
Cache-Control: public,max-age=31536000
Content-Length: 47049
Content-Type: application/json; charset=utf-8
Last-Modified: Fri, 10 Sep 2021 17:59:28 GMT
Accept-Ranges: bytes
ETag: "1abc4d996da6d71:0"
Vary: Accept-Encoding, If-Modified-Since
Server: Microsoft-IIS/10.0
Content-Security-Policy: object-src 'none';
Arr-Disable-Session-Affinity: True
Access-Control-Allow-Origin: *
Date: Thu, 30 Sep 2021 02:06:18 GMT
响应的主体是 JSON 文档。
谁能帮我理解为什么只Accept: application/json
在请求上使用标头不起作用?请求中没有正文,所以标题似乎没有Content-Type
任何效果?为什么作为参数传递给 cURL 的Content-Type
andAccept
标头的顺序会有什么不同呢?我在想也许这是我不理解的 IIS 的一些行为。