问题标签 [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.
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 请求?
谢谢!
rest - 带有特定 ZIP 内容的 HTTP Accept 标头
我们正在开发一个可以返回 zip 文件的 REST API。zip 文件的内容可以是 CSV 或 EXCEL 格式。Accept 标头应该如何描述这两种情况?
上面的例子有效吗?
根据 RFC7231 “媒体范围可以被更具体的媒体范围或特定媒体类型覆盖。如果多个媒体范围适用于给定类型,则最具体的参考优先。” https://www.rfc-editor.org/rfc/rfc7231#section-5.3.2
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?
为什么我只设置一个选项时在接受中看到多个选项?
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,但是我现在找不到设置字符集的方法。
有什么想法吗?
干杯,
彼得
c# - HTTPWebRequest 未添加 Accept 标头
我正在尝试解析网页,请求中的要求之一是设置适当的接受标头。我已经验证,如果不通过 Postman 进行设置,它就无法工作。所以我试图通过 HttpWebRequest 在 GET 请求中设置 Accept Header,但它并没有按照我在 Fiddler 中的发现发送过来。
这是我通过邮递员发送时的请求。这是有效的。注意 Accept 标头。
工作提琴手请求
这是我通过代码发送时的请求。这是行不通的。有关此请求的代码,请参见下文。
代码提琴手请求
这是我的代码:
我已经尝试了 req.Accept 下面的两行,它们也被上面注释掉了,但是没有运气。任何建议表示赞赏。我也不介意将 HttpWebRequest 更改为其他内容,只要它有效。
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...
json - 尽管请求 JSON,Dynamic 365 API 仅返回 XML
我正在使用 Postman 查询 Dynamics 365 Business Central (BC) API。API 正在返回 XML,我正试图让它返回 JSON。提供示例的Microsoft 页面将响应显示为 JSON 格式。
我尝试添加自己的请求标头以表示我希望返回 JSON
邮递员说,通过添加我自己的“接受”请求标头,它将覆盖自动生成的标头
尽管如此,我还是尝试在禁用和启用自动生成的“Accept”标头的情况下发送请求。这是回应...
我是否以正确的方式请求 JSON 用于 REST 端点?Microsoft 的示例似乎表明可以返回 JSON,但我只能返回 XML,如下所示(只是一个片段)
java - 为什么具有相同 URL 但生成不同 MediaTypes 的 RequestMappings 有效?
如果我有相同的 2 个 requestMapping URL、参数(无参数)并生成类型(JSON),我想了解为什么 Spring 应用程序会启动。默认情况下,这些方法正在生成 JSON(我测试了 XML 和其他,我得到 500 错误,我不'没有依赖项)。我想知道它是 Intellij 还是 Spring 问题,或者是否正常启动并获得第二个覆盖,Get
因为如果我也放produces = MediaType.APPLICATION_JSON_VALUE
第二个,我得到错误。这是有效的示例:
这个例子不再开始了:
PS:我知道请求应该因参数或网址而异。
javascript - 如何检查浏览器是否接受 webp 图片?
我正在使用$_SERVER['HTTP_ACCEPT']
,之后我可以检查浏览器是否支持webp
图像。但是当我发送 ajax 请求并试图$_SERVER['HTTP_ACCEPT']
让它返回时application/json, text/javascript, */*; q=0.01
。
如何检查客户端浏览器是否接受 webp 图像?