json - 使用“接受:应用程序/json”请求 JSON 文件,给出“资源无法显示”错误
问题描述
我正在尝试使用@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 的一些行为。
解决方案
推荐阅读
- reactjs - 2 个下拉菜单,相互连接,ReactJs
- laravel - Laravel Spatie 角色和权限 - 更新错误
- raku - 通过 NativeCall 在 Raku 中使用 void 结构
- html - 将 div 指定为 100% 高度
- java - 在超类和基类中使用 float 和 double 类型重载方法
- server - 通过文件客户端连接到远程服务器
- listview - Expanded ListView 仅适用于一个嵌套列,但仅此而已?我究竟做错了什么?
- html - span.icon-bar 未显示在浏览器中
- c# - 实体框架字段是必需的 (MVVM)
- logging - 如何解决 Kubernetes 中不断增加的日志问题?