遗留组件和vary http头是否存在缓存问题

遗留组件和vary http头是否存在缓存问题,http,rest,caching,http-headers,api-design,Http,Rest,Caching,Http Headers,Api Design,我正在考虑设计一个ReST服务,其中可以使用多个表示来提供资源 我的首选方法是让客户端使用适当的Accept标头发出请求,并在Accept上设置Vary标头进行响应: Vary: Accept 我的问题是,互联网上的各种硬件(代理层等)会尊重这一点吗?或者,当我的客户要求某种xml表示时,我是否会冒险让某个硬件为我的资源提供pdf表示 我的选择是通过uri扩展运行conneg ~/resource.pdf || ~/resource.xml) 或者更可能通过querystring参数

我正在考虑设计一个ReST服务,其中可以使用多个表示来提供资源

我的首选方法是让客户端使用适当的Accept标头发出请求,并在Accept上设置Vary标头进行响应:

Vary: Accept
我的问题是,互联网上的各种硬件(代理层等)会尊重这一点吗?或者,当我的客户要求某种xml表示时,我是否会冒险让某个硬件为我的资源提供pdf表示

我的选择是通过uri扩展运行conneg

~/resource.pdf  ||   ~/resource.xml) 
或者更可能通过querystring参数:

~/resource?content-type=application/pdf    ||    ~/resource?content-type=application/vnd.mytype+xml
所以:我是否可以接受Vary:Accept,或者我是否需要通过修改我的Url来保证安全?哪些硬件会给我带来问题?还有什么我应该考虑的吗


谢谢

您是否在不同的标题上看到了这些用法?据我所知,
变化:接受Accept:
头完全匹配时,code>告诉代理层将缓存的响应标记为“新鲜”。如果客户端将代码> >接受:< /C>到特定的内容类型,那么假设它被认为是“新鲜的”返回它的类型。基于eTag或其他缓存设置。@SixtoSaez我已经看到了这些答案-我只是担心请求在到达我的API之前命中的任何机器不尊重此标头,并提供错误的内容表示。e、 g.公司代理服务器/我无法控制的其他事情。这是一个合理的担忧吗?是否有人直接遇到过此类问题。在我有限的经验中,我没有看到代理层忽略
Accept
头的情况,但这不是真正的保证。我的理解是HTTP代理缓存响应与HTTP头一致。如果一组头定义了一个不一致的状态,那么它们会返回到上传递请求。这可能与你的问题有关。