【问题标题】:How do I get the response object in a bayeux server response in CometD如何在 CometD 的 Bayeux 服务器响应中获取响应对象
【发布时间】:2017-08-18 10:46:57
【问题描述】:

我正在尝试自定义 Bayeux 服务器响应的响应,以便在将其发送回 UI 之前添加一些标头参数。我可以使用 LongPollingTransport 中的自定义方法在请求中添加标头值。需要很多帮助。

【问题讨论】:

    标签: long-polling cometd bayeux


    【解决方案1】:

    CometD 试图从底层协议中抽象出来。

    例如,当您使用WebSocket 时,请求标头和响应标头的概念根本就不存在了。

    因此,如果您有附加信息要发送给客户端,那么附加信息应该放在 CometD 消息中而不是 HTTP 标头中会更好。

    此外,当使用 HTTP 作为传输时,单个 HTTP 响应可能携带多个消息,因此不清楚附加信息将引用什么 CometD 消息。

    您的问题太笼统(没有说明您为什么要添加标头,没有说明具体的标头等)无法获得准确的答案,但底线是您通常不想使用 HTTP 标头与 CometD。

    【讨论】:

    • 我想添加到标头的附加信息完全与安全相关,例如设置 X-Frame-Options: DENY, "add Cache-Control: no-cache, no-store, must-revalidate" 等。但是如果我将它添加到消息中,它将成为正文的一部分(如果我我错了)。
    • 你不能使用 Servlet 过滤器来做到这一点吗?
    • 是的,我在 jetty 分发中使用了 HeaderFilter 来执行我在 web.xml 文件中配置的操作,如此处eclipse.org/jetty/documentation/9.4.x/header-filter.html 所述,但对于正常的 http 响应,我可以设置标头,但对于 cometD响应它没有设置它。你能否给我一个如何做到这一点的例子。我正在使用 cometd js 库,它向bayeux 服务器发出请求。这就是它不拦截的原因吗?
    • github.com/cometd/cometd/issues 提出问题,让我们在那里继续讨论。
    • 我可以使用自定义过滤器来做到这一点。感谢您的帮助西蒙。
    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多