问题标签 [http-accept-header]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2106 浏览

ruby-on-rails - 为什么 Rails 无法识别请求标头中的 `Accept: application/json`?

我有一些前端 javascript 向我的后端 rails 服务器发出异步 http 请求。在前端,我没有使用 XHR(我使用axios,尽管这与问题并不完全相关)。

在请求中,我设置以下内容来告诉服务器我正在发送 JSON 并确保我返回 JSON:

在我的后端 Rails 控制器中,如果检查请求,我可以验证Accept标头:

但是 ActionPack/Rails 仍然不尊重这一点并默认为format存在:html

这是为什么?

我知道我可以附加.json到我的请求 URL 以“强制”它指定该格式,但这是唯一的选择吗?我可以轻松地附加它,但它似乎是特定于 Rails 的实现,而不是真正的“正确”方法。

此外,该方法的源代码request.format明确设置:json为 XHR 请求的格式——rails 目前是否只尊重 XHR 请求?

谢谢!

0 投票
0 回答
434 浏览

rest - 带有特定 ZIP 内容的 HTTP Accept 标头

我们正在开发一个可以返回 zip 文件的 REST API。zip 文件的内容可以是 CSV 或 EXCEL 格式。Accept 标头应该如何描述这两种情况?

上面的例子有效吗?

根据 RFC7231 “媒体范围可以被更具体的媒体范围或特定媒体类型覆盖。如果多个媒体范围适用于给定类型,则最具体的参考优先。” https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2

0 投票
0 回答
559 浏览

spring-boot - 如何在 Spring Boot Rest Template 中删除和添加新的 Accept 标头?

我正在使用GraphQL服务,如果Accept 标头为text/plain.

它期待接受application/json 所以我尝试覆盖 RestTeamplate 标头。但是,Accept 标头似乎test/plain总是存在在那里。我通过启用 debug( logging.level.org.springframework.web.client.RestTemplate=DEBUG)确认了这一点

安慰

这是我试图覆盖 Accept 标头的代码

我什至尝试先删除 Accept 标头(headers.remove("Accept"))然后setAccept,但它仍然没有从日志中删除它。

还有什么需要做的吗?

为什么它不从 Accept 标头中删除 text/plain?

为什么我只设置一个选项时在接受中看到多个选项?

0 投票
0 回答
281 浏览

asp.net-core - ASP.NET Core 通过 IActionFilter 设置 Response.ContentType 导致 406 不允许

我正在使用 IActionFilter.OnActionExecuted (ASP.NET Core 3.1) 设置带有媒体类型和字符集的 context.HttpContext.Response.ContentType,例如 application/json;字符集=utf-8。

但是,在设置 ContentType 属性时,会返回响应状态代码 406 Not allowed。

我试过了:

  • 设置请求的 Accept headers (Accept: application/json; Accept-Charset: utf-8);
  • services.AddMvc(options => options.RespectBrowserAcceptHeader = false);
  • services.AddMvc(options => options.ReturnHttpNotAcceptable = true);

加上上述的组合,但 406 不断回来。

然后我尝试设置没有字符集的响应内容类型,这有效!

这可能是有道理的 Accept=application/json != Content-Type=application/json; charset=utf-8,但是我现在找不到设置字符集的方法。

有什么想法吗?

干杯,

彼得

0 投票
0 回答
225 浏览

c# - HTTPWebRequest 未添加 Accept 标头

我正在尝试解析网页,请求中的要求之一是设置适当的接受标头。我已经验证,如果不通过 Postman 进行设置,它就无法工作。所以我试图通过 HttpWebRequest 在 GET 请求中设置 Accept Header,但它并没有按照我在 Fiddler 中的发现发送过来。

这是我通过邮递员发送时的请求。这是有效的。注意 Accept 标头。

工作提琴手请求

工作提琴手请求

这是我通过代码发送时的请求。这是行不通的。有关此请求的代码,请参见下文。

代码提琴手请求

代码提琴手请求

这是我的代码:

我已经尝试了 req.Accept 下面的两行,它们也被上面注释掉了,但是没有运气。任何建议表示赞赏。我也不介意将 HttpWebRequest 更改为其他内容,只要它有效。

0 投票
1 回答
717 浏览

json - 基于接受标头的 nginx 错误页面不适用于 json 请求

我正在尝试构建一个基于 nginx 的维护模式应用程序,它捕获对我的应用程序的所有请求并返回一个预定义的响应作为 503。

我目前有请求 json 响应的应用程序以及使用浏览器访问页面的用户。因此,如果请求包含标头Accept: application/json,我想使用 json 文件的内容进行响应maintenance.json,否则使用 html 文件maintenance.html

我当前的 nginx 配置如下所示:

对于任何路径的浏览器请求,这都很好:“https://maintenance.my-domain.local/some-path”。我得到响应代码和 html 内容。

但是对于带有标题的请求,Accept: application/json我得到一个 404 html 页面。并且 nginx 日志显示[error] 21#21: *1 open() "/usr/share/nginx/maintenance/some-path" failed (2: No such file or directory), client: 10.244.2.65, server: ,请求:“GET /asd HTTP/1.1”,主机:“maintenance.my-domain.local”

似乎 json 请求location由于某种原因忽略了我的请求。当我删除指令以设置适当的文件并始终返回 html 这也适用于json-requests

有人知道吗?

我不一定要为此特定配置寻找修复程序,而是寻找适合我需要的东西,即根据 Accept 标头使用不同的“错误页面”进行响应。

提前致谢!

编辑:由于某种原因,这现在导致 HTTP 200 而不是 503。不知道我改变了什么..

EDIT2:设法修复它的一部分:

有了这个配置,我现在在使用浏览器和维护 json 时得到维护页面,在定义 header 时Accept: application/json。浏览器响应代码现在是 200...

0 投票
2 回答
430 浏览

json - 尽管请求 JSON,Dynamic 365 API 仅返回 XML

我正在使用 Postman 查询 Dynamics 365 Business Central (BC) API。API 正在返回 XML,我正试图让它返回 JSON。提供示例的Microsoft 页面将响应显示为 JSON 格式。

图片来自 Microsoft 为 Dynamics 365 Business Central 开发连接应用程序入门

我尝试添加自己的请求标头以表示我希望返回 JSON

在此处输入图像描述

邮递员说,通过添加我自己的“接受”请求标头,它将覆盖自动生成的标头

在此处输入图像描述

尽管如此,我还是尝试在禁用和启用自动生成的“Accept”标头的情况下发送请求。这是回应...

在此处输入图像描述

我是否以正确的方式请求 JSON 用于 REST 端点?Microsoft 的示例似乎表明可以返回 JSON,但我只能返回 XML,如下所示(只是一个片段)

在此处输入图像描述

0 投票
0 回答
24 浏览

node.js - 在 nodejs webhook 端点中添加对 hal+json 的支持

我一直在使用freescout票务。现在我需要将我的 nodejs 端点作为 webhook 集成到其中。

我尝试过使用它,并且freescout总是在指定事件上达到我的端点,但总是request.body为空。

FreeScout 发送这些标头标头

我无法进入req.bodynodejs但是当我尝试相同的方法时,php它可以工作并返回给我完整的对象req.body

php的代码如下

在节点上,我使用的是 express,所以我厌倦了添加bodyparser.json() cors,但没有任何效果。

0 投票
1 回答
78 浏览

java - 为什么具有相同 URL 但生成不同 MediaTypes 的 RequestMappings 有效?

如果我有相同的 2 个 requestMapping URL、参数(无参数)并生成类型(JSON),我想了解为什么 Spring 应用程序会启动。默认情况下,这些方法正在生成 JSON(我测试了 XML 和其他,我得到 500 错误,我不'没有依赖项)。我想知道它是 Intellij 还是 Spring 问题,或者是否正常启动并获得第二个覆盖,Get因为如果我也放produces = MediaType.APPLICATION_JSON_VALUE第二个,我得到错误。这是有效的示例:

这个例子不再开始了:

PS:我知道请求应该因参数或网址而异。

0 投票
1 回答
404 浏览

javascript - 如何检查浏览器是否接受 webp 图片?

我正在使用$_SERVER['HTTP_ACCEPT'],之后我可以检查浏览器是否支持webp图像。但是当我发送 ajax 请求并试图$_SERVER['HTTP_ACCEPT']让它返回时application/json, text/javascript, */*; q=0.01

如何检查客户端浏览器是否接受 webp 图像?