Http 浏览器扩展是否应更改其发起的请求的用户代理标头?

Http 浏览器扩展是否应更改其发起的请求的用户代理标头?,http,header,user-agent,browser-extension,Http,Header,User Agent,Browser Extension,我们正在开发一个浏览器扩展,作为其功能集的一部分,它连接到外部API(在我们的服务器上)以加载数据 出于几个原因,了解扩展的哪个版本连接到API是很有用的。跟踪版本之间的升级速率可能很有用,但需要注意的是,我们可能需要根据在较旧版本的扩展中观察到的bug对API做出不同的响应 扩展让服务器知道它正在运行的版本的最佳方式是什么 是否将信息添加到现有用户代理标头?(即,此请求是从浏览器内的我的分机发送的) 用户代理:Mozilla/5.0(…)Firefox/3.6.3(MyPlugin/1.2.3

我们正在开发一个浏览器扩展,作为其功能集的一部分,它连接到外部API(在我们的服务器上)以加载数据

出于几个原因,了解扩展的哪个版本连接到API是很有用的。跟踪版本之间的升级速率可能很有用,但需要注意的是,我们可能需要根据在较旧版本的扩展中观察到的bug对API做出不同的响应

扩展让服务器知道它正在运行的版本的最佳方式是什么

  • 是否将信息添加到现有用户代理标头?(即,此请求是从浏览器内的我的分机发送的)
    用户代理:Mozilla/5.0(…)Firefox/3.6.3(MyPlugin/1.2.3.2256)

  • 是否完全替换用户代理标头?(也就是说,该请求是从扩展发送的,由于浏览器没有呈现该请求,所以原始UA字符串并不重要)
    用户代理:MyPlugin/1.2.3.2256

  • 在请求中添加单独的标题只是为了跟踪此信息?(即,此请求仍在从扩展的主机浏览器发送,但这里还有一些额外信息供您参考)
    用户代理:Mozilla/5.0(…)Firefox/3.6.3

    X-MyPlugin-Version:1.2.3.2256


  • 对我来说,选项3听起来有点吓人,因为User-Agent头的具体用途是传递关于发出请求的程序的信息,但我不知道在其他两个选项之间是否有任何具体的建议,我认为选项2。这样做的原因是,不是浏览器向端点发出请求,而是您的插件代码,可以将其解释为一个单独的过程

    提前想想,如果你的插件是一个独立的应用程序或类似的应用程序,那么让一些代理使用一种格式,而另一些使用其他格式是没有意义的


    这还假设您可能需要的任何相关浏览器信息都在插件UA中。

    4)在请求负载中包括
    version=
    您是否正在使用浏览器内置的http功能?如果是这样的话,我会说浏览器仍然是UA&3有意义的。如果您想要浏览器指标,例如修改在不同浏览器版本/版本下运行的插件的行为,那么2绝对是不可能的。@AlexK我考虑过选项4),但我不想突出显示“插件版本号”作为输入参数,充其量它是环境数据。