问题标签 [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.
rest - ReST 的 Accept 标头中的媒体类型版本控制
我为我的 ReST 服务中支持的媒体类型 (xml/json) 添加了版本控制。传入请求的 Accept 标头应具有有效版本的媒体类型,以便以指定格式获得正确的响应。问题是,如果请求在接受标头中包含有效的数据格式但版本无效(或未指定版本),我必须以该特定数据格式给出错误响应。
例如,让有效的媒体类型为application/xml+v2和application/json+v2。如果请求标头仅包含application/xml或application/xml+v1我必须在xml中给出错误响应,如果标头包含application/json+v1我必须在json中给出错误响应。
scala - 喷雾路由:如何响应不同的内容类型?
在喷雾中,我想根据给定的Accept
标题以不同的内容类型进行响应。我在rompetroll 的问题中看到了一些建议,但我想知道是否有任何规范的方法(即简单或已经实现)。
本质上,我想应该发生的事情是这样的:
提前致谢。
api - Media types for returning single item and collection of items
I'm developing an API for returning either a single product or a collection of products, so will have endpoints like http://api.company.com/products/ and http://api.company.com/products/1/ that return data in the following structures:
I'm currently using the following media types in the Accept header, respectively:
Now it doesn't seem ideal to have two media types with "product"
and "products"
as I can see that leading to some confusion, but they do return different structures of data. So I'm wondering if there's any kind of API standard here that dictates whether you should only use one media type for both or not?
jquery - 将 Accept 标头添加到 JQuery AJAX GET(通过 JSONP)请求
我正在尝试向使用 "jsonp" 的 jQuery AJAX GET 请求添加一个接受标头dataType
,但由于某种原因它不起作用。到目前为止,这是我的代码。
我尝试了多种方法,但似乎没有任何效果。我查看了jQuery站点上的文档,但找不到任何好的示例。
这就是我得到的请求标头。我需要接受标头是“应用程序/json”。
任何帮助都是极好的。谢谢!
nginx - 如何根据 nginx 中的接受头重写
我最近切换到 nginx 并且对它还很陌生,所以如果之前已经广泛介绍过,请原谅我。
我试图做的是根据发出的接受标头重写用户请求。
特别是:如果 accpet 标头是 image/gif 或 image/webp 则提供图像,如果不是连接 .gif 并提供该 url。
听到我的 apache 配置,但我现在再次使用 nginx 并尝试学习如何将其转换:
正如你所看到的,上面的 htaccess 文件就像一个魅力,但 nginx 看起来完全不同。
我做了一些阅读并想出了这个:
在服务器块内包含以下内容
可悲的是,这不起作用,我仍然不知道如何在 nginx 中进行故障排除。
任何信息将不胜感激,谢谢。
http - Accept 标头参数中的媒体子类型参数
Accept
HTTP 标头能够为其引用的每种媒体类型指定参数。
是否可以引用一个参数,使其可以包含其他不允许的字符?
目前这主要是一个思想实验,但这是我的用例:
考虑一个假设的多部分媒体类型。调用它multipart/multiformat
。它有几个预定义的部分,称它们为apart
和bpart
。这些部分中的每一个都可以是任何有效的媒体类型。
我想做的基本上是模仿Accept
媒体类型参数中的标头。例如:
在上面的示例中,引号旨在允许参数中的任何内容。multipart/multiformat
当然,即使这样可行,如果我们想将媒体类型用作顶级multipart/multiformat
文档的一部分,我们也会再次遇到冲突的问题(这次是双引号) 。耶递归。
我正在尝试做的事情可能吗?有更好的方法吗?
json - 在 REST 中提供 HTML 应用程序页面和 JSON 数据
在 RESTful 应用程序中,使用“资源”URL 来提供 JSON 数据和访问数据的页面是否是个好主意?如果不是,我应该如何区分这两件事?
假设我有一个页面/routes
,并且我有一个列出所有路线的页面。我应该这样做:
网页
JSON 响应
这似乎是错误的,因为这两个请求是针对相同的 URL/URI,但返回不同的资源(一个是应用程序页面,而另一个是数据)。为以下内容提供这样的服务似乎更合适Accept: text/html
:
(我可能不会这样做,因为它不是很有用。)
我想过几个选择:
Accept
如上所述使用 HTTP标头- 使用查询参数(例如
/routes?type=html
) - 为页面使用不同的路径(例如
/routes
用于数据和/pages/routes
应用程序) - 使用扩展(例如
/routes
用于数据和/routes.php
应用程序)
1 和 2 似乎不太对。即使页面本身就是资源,我也不太热衷于 3,但它并不完全代表应用程序中的实体。选项 4 看起来很丑陋。
我尝试查看主要站点的功能,它们都提供来自不同主机/子域的数据(例如:facebook.com
/ graph.facebook.com
,twitter.com
/ api.twitter.com
),这对我来说不是一个选择。
有任何想法吗?这个问题不应该主要基于意见,因此非常感谢您的参考。
web-services - GET 请求 - 参数或 Accept 标头中所需的响应格式
我正在开发一个 ASP.Net Web API 2 RESTful Web 服务,用于从我的数据库中导入和导出数据。对于我的导出方法,客户端有多个选项用于以不同格式(例如 pdf、xml 等)导出数据。我正在尝试为客户端确定我的界面的最佳设计,以通知服务以哪种格式提供数据。
据我所知,我的两个最佳选择是将 Accept Header 与媒体类型字符串一起使用,或者将参数添加到客户端可以在查询字符串中提供格式参数的方法中。如果我选择使用 Accept Header,这可能涉及使用自定义媒体类型字符串。
在我看来,使用 Accept Header 会更符合 HTTP 标准和 RESTful 实践,但在查询字符串中使用格式参数会更容易在服务端和客户端实现。
谁能解释这两种设计的优点或缺点是什么?
javascript - 如何在客户端修改 GET 请求(在 ajax 之外)的接受标头?
我在页面上有一个下载到 Excel 按钮,其意图是调用完全相同的 URL,但请求标头设置为“application/ms-excel”。
目前,我通过调用另一个 URL,然后调整标题,然后转发到相同的函数来伪造它。
服务器端(Django):
我的问题是我不想只为 Excel 维护自定义 URL(或添加可选 /xls/ 到 url 的正则表达式。使用现有 url 完全可以,并让服务器根据接受进行调整标头。而且,是的,我可以添加查询参数来指示 xls,但是......我的特殊要求不是接受标头的用途吗?
我找到了关于如何在 Ajax 中执行此操作的讨论,但这里没有必要。对碰巧指定 application/ms-excel 的常规 GET(而不是 POST)请求非常满意。
我知道我不能使用 href 属性指定接受。而且,虽然 javascript 中的 window.open() 可以很好地解决问题,但我也看不到任何方法可以更改接受标头。
嗯,是的,可能是一个网络菜鸟问题,但我找不到太多关于轻松修改 $http 或 $ajax 诡计之外的接受标头的内容。
javascript - 设置 window.location 以下载文件时的警告
我正在设置 window.location 以下载文件(“/foo/bar”)。现在,下载可以在谷歌浏览器中运行,但它会发出以下警告:
这些是根据谷歌浏览器设置的响应标头:
如果我可以在 js 端设置接受标头以忽略此警告,有什么想法吗?