问题标签 [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 回答
42 浏览

http - 当我的浏览器未指定它会接受的内容时,它如何显示 pdf?

我正在编写一个简单的 HTTP 服务器,它将提供来自文件系统的内容。

我对客户端和服务器如何协商内容类型有点困惑。

经过一番研究,我发现 Content-Type 指定了正在发送的 HTTP 消息的内容类型,而 Accept 标头指定了程序期望接收的响应。

当我从浏览器访问我的服务器并读取初始 GET 请求(使用空 URI 访问时)时,我得到以下信息:

如您所见,accept 标头没有指定它将接受 pdf,这是根据我在 accept 标头值中看不到 MIME 类型 application/pdf 的事实来判断的。

然而,当我发送 pdf 的字节以及设置为 application/pdf 的内容类型时,浏览器会神奇地显示它。

那么,我错过了什么?我原本以为浏览器可能会对 URI 做一些基本的推断,看看它是否以 .pdf 结尾,然后接受相应的 MIME 类型。

但是,当我通过指向 pdf 的链接访问它时,Accept 标头保持不变。

任何帮助将非常感激。

0 投票
3 回答
52023 浏览

c# - C# 将 Accept 标头添加到 HttpClient

这两个调用有什么区别?我的最终目标是通过网络 Accept: application/json发送,而不是附加到一些默认的其他 MIME 类型集。

对比

我的 CLR 是 .NET Core 2.0。

嗅探电线没有发现任何区别:

所以,除了那种奇怪的命名之外,这里没有别的东西可以得到吗?

0 投票
1 回答
95 浏览

http - 当它们具有相同的特异性、质量和级别时,应该从 HTTP Accept 标头中选择哪种媒体类型?

如您所知,您可以向 HTTP Accept 标头添加多种媒体类型。当涉及到“服务器应该返回什么类型?”的问题时 大多数解释和规范似乎只解释了根据媒体类型的特异性、质量和级别选择“首选”媒体类型的算法。

但是当它们都一样时应该怎么做呢?说我有

  • 要求 1)Accept: application/vnd.company.v3+json, application/vnd.company.v4+json
  • 要求 2)Accept: application/vnd.company.v4+json, application/vnd.company.v3+json

顺序重要吗?我找到了一篇博客文章,其中说明了这一点,但在规范中找不到有关它的来源或信息。

或者这是未定义的行为,由服务器决定(例如总是返回最新版本)或返回“300 Multiple Choice”(在野外很少见到)或其他东西。

0 投票
0 回答
72 浏览

.net - 这个接受头有什么问题?规则是什么?

我有一个Accept这样的标题:

application/myapp+json;version=2.0

但是,当我尝试使用它时,构造函数将其System.Net.Http.Headers.MediaTypeWithQualityHeaderValue拒绝为无效。南希似乎并不介意。

它似乎不喜欢分号。标头中需要指定特定版本的“正确方法”是什么?生成“有效”接受标头应遵循哪些规则?

0 投票
1 回答
281 浏览

c# - C# GitHub SCIM API // cURL 和 HttpClient 的区别

我在使用 GITHUB API 时遇到了一个奇怪的错误。当我用 cURL 联系他们时,就像:

当我尝试将它带到 C# 时,如果变成:

当我运行我的 cURL 时,一切正常,但是当我在 C# 上尝试同样的操作时,我得到了 403 错误。

它可能与“接受”非标准字段有关吗?

0 投票
1 回答
2087 浏览

.net-core - 如何在 .Net Core 2.0 中使用内置的 xml 或 json 格式化程序来自定义接受标头值

更新:我已经上传了一个小测试项目到 github:链接

我正在使用 .Net Core 2 创建一个小型 Web 服务,并希望让客户能够指定他们是否需要响应中的导航信息。web api 应该只支持 xml 和 json,但是如果客户端可以在他们的请求中使用 Accept: application/xml+hateoas 或 Accept: application/json+hateoas 那就更好了。

我尝试像这样设置我的 AddMvc 方法:

我在我的控制器方法中使用接受标头来区分正常的 xml/json 响应和类似讨厌的响应,如下所示:

所以,简而言之,我不想创建自定义格式化程序,因为唯一的“自定义”事情是在我的响应中包含或排除导航链接,但响应本身应该是基于 Accept 标头值的 xml 或 json。

我的模型类看起来像这样(主要是字符串和基本值):

从 Fiddler 调用我的服务时,我得到了不同 Accept 值的以下结果:

  1. 接受:application/json -> 状态码 200,仅包含请求的数据。
  2. 接受:application/json+hateoas -> 状态码 406(不可接受)。
  3. 接受:应用程序/xml -> 状态码 504。 [Fiddler] ReadResponse() 失败:服务器没有为此请求返回完整的响应。服务器返回 468 字节。
  4. 接受:application/xml+hateoas -> 状态码 406(不可接受)。

谁能告诉我哪个设置错了?

0 投票
0 回答
200 浏览

httprequest - HttpGet 设置 Accept 头后返回 406 错误

通过浏览器点击它后,我有一个以 &filename=xxxx 结尾的 url,它重定向到一些 XXX url 开始下载预期的 zip 文件。

当我尝试通过 Java 代码访问相同的 url 时,它返回 406 Not Acceptable。在互联网上搜索后,我尝试了以下尝试

HttpUriRequest request = new HttpGet(URL).addHeader(HttpHeaders.CONTENT_TYPE, "application/zip"); request.addHeader("Accept", String.valueOf(ContentType.APPLICATION_OCTET_STREAM))

当我尝试更改执行方法本身时, httpClient.execute(new HttpGet(httpUrl), httpClientContext) HttpGet 对象未转换为 HttpUriRequest 并返回 Hostname 作为空错误。

0 投票
1 回答
669 浏览

http-headers - 具有多个值的 Accept Header 中是否需要权重值?

根据规范,HTTP Accept 标头可以有多个值,如下所示:

资源

我的问题是:接受具有多个值的标头是否需要至少一个权重?或者,如果没有任何内容类型具有权重,它们仍然有效吗?

换句话说,根据规范,这个 Accept 标头是否仍然有效?

提前致谢!

0 投票
1 回答
722 浏览

.htaccess - 指定并测试 htaccess HTTP_ACCEPT

当我.htaccess

这有效

但这并不

不跟随重定向它返回:

完整的文件是:

0 投票
1 回答
418 浏览

rest - 如何在接受不同 Accept 标头值的 REST 端点中处理错误响应。

我正在尝试向 REST 端点添加新的内容类型。目前它只返回 json 但我现在还需要能够返回一个 CSV 文件。

据我所知,最好的方法是使用Accept带有值的标头,text/csv然后添加一个能够对此做出反应并将返回的正文转换为正确CSV表示的转换器。

我已经能够做到这一点,但是我在处理异常时遇到了问题。直到知道,所有返回的错误都在json. 前端期望任何500状态代码都包含带有错误的特定主体。但是现在,通过添加返回application/json或返回text/csv到我的端点的选项,如果发生错误,用于转换正文的转换器将是jackson转换器或我的自定义转换器,具体取决于Accept传递的标头。此外,我的前端将需要读取content-type返回的值并根据返回的表示类型解析值。

这是处理这种情况的正常方法吗?

更快的解决方法是忘记Accept标头并包含指示预期格式的 url 参数。这样做,我将能够content-type直接在控制器中更改响应和数据解析,因为GET请求不会包含任何Accept标头,并且它将能够接受任何内容。代码的某些部分已经在执行此操作,其中唯一预期的响应格式是,因此除非有更好的处理方法,否则CSV我将很难为标头的使用辩护。Accept