问题标签 [chrome-native-messaging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2696 浏览

objective-c - 本机消息 API 错误:未找到指定的本机消息主机

我正在为 OS X 开发一个 Objective-c 应用程序,该应用程序将涉及使用 Google Chrome 进行消息传递。我已经按照示例并从此处下载了示例。但是,我无法让扩展程序连接到我的应用程序。清单文件中我的应用程序的路径是在“/Users/username/Library/Developer/Xcode/DerivedData/app_name-UUID/Build/Products/Debug/app_name.app/Contents 中找到的 unix 可执行文件的绝对路径” /MacOS/app_name”。我在上一个链接中提到的两个位置都放置了相同的清单文件(尽管我知道只需要一个)。

当我尝试连接到正在运行的应用程序时,我收到消息“连接失败:找不到指定的本机消息传递主机”。

我可以在原生应用程序仍在开发中时测试消息传递 API 吗?如果是这样,怎么做?还是我需要先将应用程序打包成 .dmg 文件?

0 投票
1 回答
15515 浏览

google-chrome - 什么是应用程序之间的本地消息传递以及它是如何工作的?

Chrome 开发者文档指的是Native Messaging直接从 Chrome 扩展程序或应用程序与其他桌面应用程序通信的东西。

我如何判断桌面应用程序何时具有此类可用的本机消息传递以及它可以接受什么样的通信?有没有办法让应用程序公开它将传达的内容?

如果我需要与该桌面应用程序的原始开发人员交谈,这是否是最常见的术语(本机消息传递),以便他们理解我的意思?

本机消息传递功能在 Windows 和 Mac 上是否相同?

0 投票
2 回答
1055 浏览

google-chrome-extension - 本机消息传递的安全性?

我有一个用于网站登录数据的 NPAPI 插件。

我想用Native Messaging技术替换它。我已阅读文档,但我有一个问题:这项技术安全吗?

黑客能否捕获从 JavaScript 传输到本地主机应用程序并返回的数据?

编辑:合并一个措辞更好的问题:

  • stdio数据传输有多安全?
  • 有没有办法进行这种数据传输的中间人攻击?
0 投票
1 回答
1322 浏览

google-chrome-extension - 如何在 Chrome 扩展程序和本机消息传递主机之间保持长期连接?

我创建了一个 Chrome 扩展并使用Native Messaging连接到 C++ 本机应用程序。

但是对于 Chrome 扩展发送到本机主机的每条消息,都会创建一个新的主机 exe 实例。我认为它效率不高,因为我向主机发送了很多消息。

Chrome 扩展程序和本机消息传递主机之间是否存在长期连接方法?

0 投票
3 回答
12749 浏览

javascript - Google Chrome 扩展程序 - 未找到指定的本机消息传递主机

我创建了一个使用本地消息传递给主机的扩展。

扩展的 manifest.json 是:

popup.html:

main.js 文件:

我有一个本机应用程序abc.exe

原生应用 manifest.json:

在注册表中,默认值是(这HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echoC:\Users\username\Desktop\Extension1\NativeApp\manifest.json清单文件物理存在的位置)。

问题是,每次我运行它时,它一直说:“未找到指定的本地消息传递主机” ......我重新检查了我的代码,它似乎很好,就像谷歌的本地消息传递指南一样。调试器控制台中记录的错误是:“未捕获的错误:尝试使用断开连接的端口对象”,我不知道为什么它一直在发生。

此外,在chrome.runtime.connectNative.exe 之后没有启动(在任务管理器中看到之后),而且似乎有一些与代码无关的东西,但更有可能在配置中。

我需要一些帮助来解决这个问题,所以任何帮助都会很有用!

谢谢

0 投票
1 回答
1420 浏览

c# - 需要在点击它时打开chrome原生应用程序,而不是在启用扩展程序时

我有一个 Windows 形式的 chrome 本机应用程序(c#)。当我在 chrome 中启用扩展时,它会打开。我们可以管理它仅在单击应用程序 exe 时打开吗?我们怎么能做到这一点?这是c#代码

背景.js代码

用于将 chrome 扩展程序与应用程序连接的 Menifest 文件

0 投票
1 回答
2713 浏览

java - 带有 chrome 扩展的 Java 本机消息传递 - 无法正确写入长度

我目前正在编写一个与 Chrome 扩展程序通信的 Java 程序。我需要实现 Chrome 原生消息传递协议才能进行通信。谷歌浏览器文档说:

...每条消息都使用 JSON、UTF-8 编码进行序列化,并以原生字节顺序的 32 位消息长度开头。(来源

我尝试在 Java 中实现这一点,但是当我的消息有一定长度时我会遇到问题,即使我的实现应该是正确的。这是我当前的实现,基于早期的 SO-答案和问题(例如这里):

似乎问题在于java实现字符的方式。我希望像在 C 中那样使用普通字符。在实践中,Java 似乎有时会将这些字符转换为 unicode 字符(或者至少,到目前为止,这是我的怀疑)。这反映在长度为 2269 的 java 程序的以下输出(通过管道传输到 xxd 以显示实际字节)中:

然而,预期的输出(使用python):

这里到底发生了什么?为什么 Java 会将我的“0xDD”转换为“0xC39D”,如何让我的getBytes函数代表 Chrome 原生消息传递的预期输入?使用另一种语言不是一种选择。

0 投票
2 回答
291 浏览

c++ - 从主机应用程序向 chrome 扩展程序发起消息

由于堆栈溢出的好人,我设法将消息从 chrome 扩展发送到本机 (C++) 应用程序。一旦原生主机应用程序接收到消息,它就可以返回任何响应数据。但是,这是对从扩展接收数据的本机应用程序的响应。此外,扩展程序发送的消息不是同步的,因此扩展程序不会等待主机应用程序的响应。

我的要求是从本机应用程序启动通信连接,即我的本机应用程序将定期向 chrome 扩展发送更新。是否有任何机制来启动从本机应用程序发送的消息并将其传递给适当的 chrome 扩展程序?

我基本上想要实现以下目标:我想在 webRequest.OnBeforeSendHeaders 之类的事件上发布消息,并且我希望对消息的响应来决定我是否应该阻止 url 请求。如果响应的接收将在回调上进行,这将主要在不同的线程上,这将不允许我等待 webRequest.OnBeforeSendHeaders 线程上的响应。在等待本机应用程序响应我的请求时,有没有办法可以暂停 webRequest.OnBeforeSendHeaders?或者 webRequest.OnBeforeSendHeaders 可以查看消息缓冲区(循环)以查看本机应用程序是否已响应?

还是有其他方法可以实现这一目标?

0 投票
0 回答
327 浏览

google-chrome - 自 Chrome 更新以来未调用本机消息 exe

我正在使用本机消息传递从我的 chrome 扩展程序和系统进行通信。

由于我也在开发扩展,所以我通过在 Chrome 中加载解压缩的扩展来安装扩展。在开发过程中,我也不得不经常删除扩展。

它工作正常,但几天前 Chrome 更新时,本机 exe 没有被调用。当前的 Chrome 版本是 37.0.2062.120 m 32 位。

这是我的扩展的配置。
我在 background.js 中使用 chrome.runtime.connectNative("com.foo")

在注册表中,条目是

nativeMessage.json 看起来像这样

native.exe 位于 nativeMessage.json 所在的同一目录中。

请帮助我调用本机 exe。

0 投票
2 回答
170 浏览

c++ - 使用 NativeMessaging 的 Chrome 扩展无法接收某种 json 数据

Chrome 扩展使用原生消息接收 json 数据:

在我的 C++ 程序中,如果我发送一个 json 字符串str1[],扩展可以接收它,但如果我发送str2[],扩展不能接收它。这个字符串有问题吗?

str2[]代表一个长字符串,它是一个正确的 Json 数据,但不能被扩展接受。
有没有人遇到同样的问题并解决它?

我正在尝试按如下方式发送长度和消息:

我已经使用这些方法来发送长度: