gpt4 book ai didi

web-services - 使用我的网络服务的客户如何绕过他们的 ISP 的透明代理缓存以确保他们的请求到达我的服务器?

转载 作者:可可西里 更新时间:2023-11-01 15:12:44 24 4
gpt4 key购买 nike

我编写了一个 RESTful 网络服务,它只被设备使用,从不被浏览器使用。这些设备通过所有者现有的家用路由器访问互联网,并通过每隔 30 秒通过路由器发送 HTTP 请求来与 Web 服务通信。这些请求大多是“轮询”请求,以查看 Web 服务是否有关于设备的任何新信息。

我想阻止任何 ISP 透明代理拦截请求并返回缓存的响应。我读到过这样做的一种方法是将随机查询字符串附加到请求的 URL 末尾,以欺骗代理认为这是一个独特的请求。例如:

http://webservicedomain.com/poll/?randomNumber=384389

我有能力做到这一点,但这是最好的方法吗?有点像黑客。

最佳答案

你应该使用 HTTP's Cache-Control header实现这一目标。

在您应该发送的回复中:

Cache-Control: private, must-revalidate, max-age=0
  • private - 表示全部或部分响应消息供单个用户使用,不得由共享缓存缓存。
  • ma​​x-age=0 - 表示客户端愿意接受年龄不大于 0 秒的响应。 IE。响应立即过时。
  • must-revalidate - 当出现在缓存接收到的响应中时,该缓存在它变得陈旧后不得使用该条目来响应后续请求,而无需首先与源服务器重新验证它。

您还应该发送 Pragma header对于遗留的 HTTP/1.0 中间服务器:

Pragma: no-cache

相关阅读:

关于web-services - 使用我的网络服务的客户如何绕过他们的 ISP 的透明代理缓存以确保他们的请求到达我的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com