问题标签 [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 投票
2 回答
3938 浏览

java - 忽略“接受”标题时返回“文本/纯文本”

我有这段代码:

在这种情况下,我想要的是返回“true”并带有“text/plain”类型,即使我的接受标头显示“application/json”或其他任何内容。现在,当我这样做时,我得到 406。有没有简单的方法来做这样的事情?我的意思是真的很简单?我宁愿不更改我的配置文件,这将不仅仅影响这一种方法。

编辑: 我找到了部分解决方案

但是有没有人知道更简单、更短的解决方案?

0 投票
1 回答
322 浏览

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 代码。

0 投票
2 回答
5433 浏览

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

0 投票
0 回答
196 浏览

wcf - 如何停止发送接受标头?

我的客户发送到服务 Accept-Headers: gzip,deflate 并且服务正在向我发送 gzip。所以我需要停止发送 Accept-Headers:gzip,从我这边放气。我正在使用.Net Core 2.1。

有什么办法吗?

0 投票
4 回答
198 浏览

spring - Spring 如何知道将返回对象转换为 JSON 而不是 XML 或任何其他格式?

考虑以下:

Accept请求中没有指定标头,但默认情况下仍将响应转换为JSON使用 Spring Boot 时的响应。该@ResponseBody注释在其文档中未提及任何有关存在转换的信息

0 投票
0 回答
208 浏览

java - REST 模板无法解析带有冒号 (':') 的字符串响应

我正在尝试一个返回格式标记的 POST API - “ABC:XYZ”。当我试图将其解析为字符串时,它无法做到。我怀疑,这是因为令牌中存在冒号(:),因此它将其视为 JSON。我正在使用 REST 模板。我尝试将 Accept Header 设置为 MediaType.TEXT_PLAIN 但这对我也不起作用。

下面是我的代码

有人可以帮我吗?

0 投票
0 回答
172 浏览

rest - 告诉 Spring Boot REST 端点允许缺少 Accept 标头的请求

我有客户端应用程序向没有 Accept 标头的端点发送请求。端点因“找不到可接受的表示”而失败,但我希望控制器无论如何都处理请求。

我正在编写一个处理 REST API 请求并返回 OPDS 提要的 Java 应用程序。当客户端发送请求并包含标头时(在 iOS 上,客户端都包含“accept= / ”),端点按预期工作。

但是当客户端(我在 Android 上测试过的所有东西)不包含此标头时,Spring 不会将请求传递给控制器​​方法,而是返回 HTTP 406 响应而不是数据。

无论接受标头是否存在,我都希望调用控制器方法并始终返回内容。

没有太多要显示的代码,因为这更像是一个集成问题。

iOS 客户端都使用以下标头提交请求:

但是Android客户端都发送了:

无论接受标头如何,我都希望该方法接收请求。

0 投票
1 回答
823 浏览

javascript - 如何在android WebView中获取HTTP请求Accept Header

WebView在android中获取浏览器属性。

能够获取 navigator.userAgent、screen.width、screen.height 等属性。

随着这个期待在 android WebView 中获得 HTTP 请求 Accept 标头。

有没有办法得到相同的?欢迎任何帮助

0 投票
1 回答
659 浏览

http - “accept-ranges”标头设置为“none”而不是“bytes”

在向端点发出 curl 请求后,我得到了以下响应

最终,我不想要accept-ranges: bytes,而是必须是"accept-ranges: none"

我尝试在 nginx 配置中进行以下操作

可能是什么问题?

0 投票
1 回答
155 浏览

jersey - 我们需要用于 JWT 响应的 javax.ws.rs MediaType 是什么

如果我们期望服务器返回 JWT 响应,我们可以在 @Produces 注释中使用什么 MediaType?

对于我们可以使用的应用程序 json,

但是如果我们希望它是 application/jwt 呢?

如果我们像下面这样使用它,服务器将返回一条错误
消息“No message body writer has found for response class ....”