【问题标题】:How to get http response header in npapi plugin如何在 npapi 插件中获取 http 响应标头
【发布时间】:2012-11-05 14:06:03
【问题描述】:

我是插件开发的新手。有人告诉我使用 Firebreath 来开发 npapi 插件,结果证明它非常简单。现在,我希望访问传递给插件的响应的 http 响应标头。但我想不出办法,因为他们的文件稀缺,可用于喷火。在 NPAPI 教程中,他们使用 npstream,但我不知道如何在 firebreath 中使用这种结构。任何帮助将不胜感激。

更新:

void tPlugin::handleUnsolicitedStream(FB::BrowserStreamRequest& req)
{ 
 const FB::PluginEventSinkPtr sinkPtr;
 req.setEventSink(sinkPtr);
 responseHeaders = req.headers;
 FB::HeaderMap::const_iterator it = responseHeaders.begin();
 str = (*it).first + " : " + (*it).second;                   // str is a class variable
 FB::DOM::WindowPtr window = m_host->getDOMWindow();
 window->alert(str);
 str = "hello";
 window->alert(fname);
}

没有任何警告框出现!

void tPlugin::onPluginReady()
{
   FB::DOM::WindowPtr window = m_host->getDOMWindow();
   window->alert(str);
}

出现一个空的警告框!

【问题讨论】:

    标签: c linux http browser npapi


    【解决方案1】:

    如果您阅读了您正在使用的 BrowserStreamRequest 对象的source,或者如果您阅读了创建它的源代码,您会发现该对象上有一个 headers 变量。

    FB::HeaderMap headers;
    

    FB::HeaderMap 当然是定义在SimpleStreamHelper.h:

    typedef std::multimap<std::string, std::string> HeaderMap;
    

    而且,澄清一下,有大量关于 FireBreath 的文档;只是这个特殊功能并不多,它才出现在树中大约一个月。

    编辑:从过去的对话中我很确定你已经在处理这个问题,但是浏览器创建的流是通过 BrowserStreamRequest 对象传递给你的 handleUnsolicitedStream 方法你的插件对象;在 fbgen 模板中默认情况下,您的插件不会覆盖此方法,但您可以添加它。

    【讨论】:

    • 您询问来自响应的标头的位置;它们被放入 BrowserStreamRequest 对象中,该对象是在创建流时创建的(在 NPP_NewStream 中)
    • 这是我感到困惑的地方,因为从过去与您的对话中,我认为您已经在处理未经请求的流,但我已更新我的答案以包含该信息。
    • 也许你不明白我的回答;我不是在谈论您何时创建 http 请求。我说的是浏览器收到包含 mime 类型的响应并调用插件的情况。当您需要相同响应的标头时,将调用 handleUnsolicitedStream 方法。该 FB::BrowserStreamRequest 对象上有一个 FB::HeaderMap 类型的公共属性,其中包含您要在其中查找的标头。这不是一种方法!它只是一个公共财产。去看看代码。也试试调试器。我不知道我还能如何解释同样的事情。
    • 对不起。欢迎您附加调试器并尝试验证这一点,但如果是这种情况,很可能浏览器根本没有提供任何标头信息。
    • 如果您关注该线程,您会看到引用的 jira 票证是 jira.firebreath.org/browse/FIREBREATH-210,它已解决。 (是的,它是固定的)
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2016-04-25
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多