问题标签 [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.
java - 忽略“接受”标题时返回“文本/纯文本”
我有这段代码:
在这种情况下,我想要的是返回“true”并带有“text/plain”类型,即使我的接受标头显示“application/json”或其他任何内容。现在,当我这样做时,我得到 406。有没有简单的方法来做这样的事情?我的意思是真的很简单?我宁愿不更改我的配置文件,这将不仅仅影响这一种方法。
编辑: 我找到了部分解决方案
但是有没有人知道更简单、更短的解决方案?
rest - 我应该使用接受 http 标头还是更明确的 rest api 资源来定义客户端请求的数据格式?
假设我有一个类似的 API:/api/v1//modify?txtUri={a-text-file-uri-goes-here}
它过滤和修改位于给定 URI 的给定文本文件,并根据一些内部业务规则在有效负载响应中返回过滤后的文本文件。
起初我只想返回 JSON,但我想允许不同的返回格式。
是否更好(即最标准的方式):
使用不同的资源:
/api/v1/modify?txtUri={a-text-file-uri-goes-here}/json
/api/v1/modify?txtUri={a-text-file-uri-goes-here}/xml
返回/api/v1/modify?txtUri={a-text-file-uri-goes-here}
默认回退,返回 json
添加另一个可选的查询字符串参数
format
:/api/v1/modify?txtUri={a-text-file-uri-goes-here}?format=json
返回json格式/api/v1/modify?txtUri={a-text-file-uri-goes-here}?format=xml
返回 xml 格式/api/v1/modify?txtUri={a-text-file-uri-goes-here}
默认回退,return 返回 json
设置 Accept http 标头:https ://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept以及我们想要获取的返回格式,如果未设置,则返回 406 http 代码。
java - 根据 HTTP 规范,“*”是内容类型的有效通配符吗?
我们正在使用 Jax-RS 的 Jersey 参考实现。如果未指定接受标头,Jersey 的 Jax-RS 客户端实现将默认接受标头附加到请求中。默认的接受标头如下所示:
如您所见,它使用单个星号“*”作为内容类型(在图像/jpeg 之后)。
在 Jax-RS 规范(参见此处)中,这个单个 * 定义为
我将其解释为“任何媒体类型的通配符”
'*/*' 定义为
我将其解释为“任何媒体范围的通配符”
但是,HTTP 规范(RFC7231)没有提到“任何媒体类型”通配符,只有媒体范围通配符:
我将其解释为允许的内容类型:
- */*
- 文本/*
- 文本/纯文本
换句话说,内容类型必须始终采用“something slash something”或“单个 * is not a valid content type”的形式。虽然,后者没有明确说明。
现在这两个规范都是公开标准化的,HTTP 规范在某种程度上是 Jax-RS 规范的父文档,因为 Jax-RS 基于 HTTP。恕我直言,这两个标准在通配符内容类型方面相互矛盾。
问题是,什么是适用的?
- 单个星号“*”是否是有效的内容类型(允许服务器以任何内容类型响应“)
- 或者是否应该使用单个星号产生错误?如果是,是哪一个?
- 400 错误请求
- 406 不可接受
- 或者服务器是否应该更加宽容并将 * 视为通配符 */* 尽管 * 不是有效的内容类型(并且可能在日志中产生警告或其他内容)?
编辑
在处理 Jsoup(不是 JaxRS/Jersey)时,我观察到 JSoup 使用相同的默认接受类型,并且默认标头似乎是sun.net.www.protocol.http.HttpURLConnection
因此,如果这是一个错误,那不是泽西岛的错误,而是 Java 的 HttpURLConnection
wcf - 如何停止发送接受标头?
我的客户发送到服务 Accept-Headers: gzip,deflate 并且服务正在向我发送 gzip。所以我需要停止发送 Accept-Headers:gzip,从我这边放气。我正在使用.Net Core 2.1。
有什么办法吗?
spring - Spring 如何知道将返回对象转换为 JSON 而不是 XML 或任何其他格式?
考虑以下:
Accept
请求中没有指定标头,但默认情况下仍将响应转换为JSON
使用 Spring Boot 时的响应。该@ResponseBody
注释在其文档中未提及任何有关存在转换的信息
java - REST 模板无法解析带有冒号 (':') 的字符串响应
我正在尝试一个返回格式标记的 POST API - “ABC:XYZ”。当我试图将其解析为字符串时,它无法做到。我怀疑,这是因为令牌中存在冒号(:),因此它将其视为 JSON。我正在使用 REST 模板。我尝试将 Accept Header 设置为 MediaType.TEXT_PLAIN 但这对我也不起作用。
下面是我的代码
有人可以帮我吗?
rest - 告诉 Spring Boot REST 端点允许缺少 Accept 标头的请求
我有客户端应用程序向没有 Accept 标头的端点发送请求。端点因“找不到可接受的表示”而失败,但我希望控制器无论如何都处理请求。
我正在编写一个处理 REST API 请求并返回 OPDS 提要的 Java 应用程序。当客户端发送请求并包含标头时(在 iOS 上,客户端都包含“accept= / ”),端点按预期工作。
但是当客户端(我在 Android 上测试过的所有东西)不包含此标头时,Spring 不会将请求传递给控制器方法,而是返回 HTTP 406 响应而不是数据。
无论接受标头是否存在,我都希望调用控制器方法并始终返回内容。
没有太多要显示的代码,因为这更像是一个集成问题。
iOS 客户端都使用以下标头提交请求:
但是Android客户端都发送了:
无论接受标头如何,我都希望该方法接收请求。
javascript - 如何在android WebView中获取HTTP请求Accept Header
想WebView
在android中获取浏览器属性。
能够获取 navigator.userAgent、screen.width、screen.height 等属性。
随着这个期待在 android WebView 中获得 HTTP 请求 Accept 标头。
有没有办法得到相同的?欢迎任何帮助
http - “accept-ranges”标头设置为“none”而不是“bytes”
在向端点发出 curl 请求后,我得到了以下响应
最终,我不想要accept-ranges: bytes,而是必须是"accept-ranges: none"
我尝试在 nginx 配置中进行以下操作
可能是什么问题?
jersey - 我们需要用于 JWT 响应的 javax.ws.rs MediaType 是什么
如果我们期望服务器返回 JWT 响应,我们可以在 @Produces 注释中使用什么 MediaType?
对于我们可以使用的应用程序 json,
但是如果我们希望它是 application/jwt 呢?
如果我们像下面这样使用它,服务器将返回一条错误
消息“No message body writer has found for response class ....”