【发布时间】:2011-09-04 06:51:42
【问题描述】:
假设我要部署一个可能放置在 NAT/防火墙后面的服务器应用程序,并且我不想要求用户调整他们的 NAT 端口映射。换句话说,与服务器的连接是不可能的,但我的应用程序本质上是一个服务器应用程序,即它按 URI 发送回对象。
现在,我正在考虑定期从服务器发起连接,以查看需要响应的请求。我将通过端口 80 使用 HTTP,因为它几乎可以在任何地方通过 NAT/防火墙工作。
问题是,在实现可以在应用程序级别充当服务器的客户端(特别是使用 HTTP)时,是否有任何标准注意事项和常见做法?任何特殊的 HTTP 标头?设计模式?
例如我正在考虑以下方案:
- 客户端(这是我的逻辑服务器)向服务器发送一个虚拟 HTTP 请求
- 服务器返回非标准头
X-Request-URI:、X-Host:、X-If-Modified-Since:等,换句话说,请求头包裹在X-xxx中,因为在这种情况下它们不是标准的;还请求保持连接活动 - 客户端以发送请求对象的 POST 请求进行响应;再次,使用包装的标题(例如
X-Status:等)
除非有更“标准”的方式来做这样的事情,你认为我的方法是合理的吗?
编辑:发生了一个有趣的讨论on reddit here
【问题讨论】:
标签: http client-server protocols http-protocols