问题标签 [custom-protocol]

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 投票
0 回答
128 浏览

javascript - 检查自定义协议是否存在

我必须确定是否安装了自定义协议,为此我尝试过protocolCheck.js,也尝试过

有了这个我可以检测和启动自定义协议,但我的问题是,我只需要检测自定义协议是否注册。我不想启动或不想出现浏览器对话框。

谁能帮我得到这个。

0 投票
2 回答
2795 浏览

javascript - 在 chrome 86 中检测自定义协议处理程序

我已经根据https://gist.github.com/aaronk6/d801d750f14ac31845e8实施了一个解决方案, 并且在 chrome 85 之前它工作正常。最新的 chrome Update Onblur 未检测到开放协议处理程序弹出窗口。有没有办法使用 Chrome 86 新版本识别在 Windows 中注册的自定义协议。我已经实现的代码在下面提到,它适用于 Firefox

0 投票
1 回答
116 浏览

google-chrome - 使用自定义/外部协议可能导致此 Chrome 安全警告的原因是什么?

我正在尝试诊断同事的问题,即当他们尝试使用特定自定义协议打开 URL 时,他们在 Chrome 中收到安全警告。他们看到了这个警告:

在此处输入图像描述

我最初认为这可能是因为双斜杠被解释为 HTTPs / 告诉浏览器使用相同的协议,但显然当它被删除时,它会在他们提交请求时重新添加。

什么可能导致此警告?这可能是我们如何注册自定义协议的问题吗?

0 投票
0 回答
71 浏览

javascript - 在 chrome 版本 85+ 中检测自定义协议处理程序

在 chrome 版本 85 之后,如果注册了自定义协议,则过去会发生的模糊事件不会发生。因此,我试图找出当我尝试更改窗口位置时是否有任何方法可以捕获抛出的错误。如果协议已注册,我想停止下载,如果没有,则继续下载。

自定义协议检查

铬源所示

铬源

0 投票
0 回答
40 浏览

javascript - 使用两种协议进行电子深度链接

Electron 文档中有一个app.setAsDefaultProtocolClient方法,它允许通过外部 url 打开电子应用程序。这里也提到了如何做到这一点。

是否可以对两个协议执行此操作?例如,我有电子应用程序,它会在“custom1://”和“custom2://”上打开?

我不知道这到底是如何工作的,所以也许这是一个非常愚蠢的问题 :) 所以我非常感谢任何理解帮助

0 投票
1 回答
61 浏览

c - 修补闭源网络应用程序以从文件中读取

所以让我解释一下,我想模糊一个名为Y实现自定义协议的闭源应用程序让我们命名协议XY是用 C 编写的。
有没有办法修补send/read家庭函数以从文件而不是套接字读取?
这可能适用于 AFL/AFL++ 模糊器吗?
请记住,该应用程序是为类 UNIX 生态系统开发的。

0 投票
0 回答
55 浏览

reactjs - React + 电子深度链接,如何从 React 应用程序中打开确切的路线

我有一个电子 + 反应应用程序(带有 react-router-dom )。我已经启用了自定义协议的深度链接my-app:。按照这个 ans 深度链接电子应用程序。使用 Electron (macOS) 打开应用程序并通过深度链接传递参数

深度链接工作正常,电子应用程序以其现有状态打开。现在,我的 react 应用程序有多个路由,/join/create等。如何使用深度链接打开 react 应用程序的确切路由,my-app://join应该在应用程序中打开加入屏幕,同样my-app://create应该在/create路由中启动应用程序。我可以访问电子文件中的深度链接 url,不知道如何从反应应用程序中的深度链接中打开确切的路由。

0 投票
0 回答
48 浏览

javascript - 有没有办法在 JS 中获取所有已注册的协议处理程序?

所以我正在尝试制作一个基本上用作 URL 缩短器的 Web 应用程序,我可以在其中使用自定义协议navigator.registerProtocolHandler(我知道由于各种原因这不是一个好主意,但我只是想尝试一下用它)。例如,web+yt:将我重定向到 YouTube,并将web+yt:htb我重定向到 HowToBasic 的频道。到目前为止这是可行的,但问题是是否有办法查询哪些协议处理程序已注册?还有navigator.unregisterProtocolHandler注销它们的功能,但我找不到有关列表功能的任何信息。我可以将其存储到 cookie 或localStorage中,但如果我清除网站数据,我必须猜测哪些已注册,这不是一个很好的解决方案。大家知道有什么解决办法吗?谢谢

0 投票
0 回答
28 浏览

security - 通过自定义协议处理程序传递的数据有多安全?

假设您设置了一个自定义协议处理程序来运行带有一些启动数据的应用程序,对吗?

这些数据有多安全?我无法找到任何有关以下内容的资源:

  • 浏览器会缓存这些数据吗?
  • 其他应用程序是否可以看到此信息通过以及如何传递?

我发现资源讨论了明显的问题,例如攻击站点如果发现您有协议,就会滥用您的协议。

否则,对于希望以这种方式使用他们的网站启动应用程序的开发人员来说,如果我们不希望其他人看到“某些数据”,我们需要担心什么?更具体地说,攻击者如何访问数据?

任何 MDN 或其他官方参考资料将不胜感激!

0 投票
0 回答
35 浏览

google-chrome - 为什么 chrome 在尝试使用 location.href 打开自定义协议 url 时随机显示警报?

我查看了有关 chrome 和自定义协议应用程序的另一个线程,但我无法解决我的疑问。在我的网络应用程序中,当您单击一个按钮时,它会触发一个带有网页的新选项卡(window.open(url,“_blank”))。新选项卡使用 url(另一个使用 https 协议的 Web 应用程序)打开。此 url 在加载时触发一个 javascript 函数,该函数会验证一些内容,然后生成自定义 url,例如 myurl://base64code,并以这种方式将其放入现有 iframe windows.frames['myframe'].location.href=自定义协议 URL。我尝试了不同的方式(location.replace,创建一个新的 iframe 并设置 url 等),但我总是遇到同样的问题。如果我刷新(ctrl f5)页面,它总是显示对话框,或者如果我打开链接并打开开发者控制台。但是,如果我单击我的按钮并在新选项卡中打开页面,则只有在我刷新 (ctrl+f5) 时它才起作用。这在 IE11 上完美运行,它直接启动应用程序。

任何想法为什么 chrome 和 edge 会这样工作?

更新:我找到了原因,是我使用了protocolcheck.js(https://gist.github.com/vladimirtsyupko/cfcd332476b16683bb0b)库。

首先,我尝试使用 timeoutHack 打开一个协议(它使用模糊事件),然后在失败后,它会触发另一个 url(在本例中为 https)并且不会出现对话框。我在 chrome > 85 https://bugs.chromium.org/p/chromium/issues/detail?id=1137801上发现了一个带有模糊事件的错误

提前致谢