问题标签 [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.
java - 用于替换 Applet 的 URL 处理程序
目前我的公司有一个小程序,它可以下载一个 JAR 文件来打开并收听所选文件(例如 .doc)中的更改。然后,这些更改将上传回我们的服务器。
小程序正在消亡,这对我们来说是一个大问题。我们考虑过(并且仍在考虑)替代它的方法。JWS、插件、Adobe Air、Native Messaging、Active X。考虑了很多东西(有些测试没有运气,比如 JWS)。但现在我们认为最好的解决方案可能是 URL 处理程序。
我们将有一个桌面应用程序,它可以拦截带有文件信息的 URL,下载它,然后监听更改。
我的问题是:我们是否朝着正确的方向前进?我害怕选择另一种“即将死亡”的技术。它可以用Java(很好)完成吗?我所有的实际代码(jar 文件)都在 Java 中,我的意图是保留它。
我们 99% 的客户使用 Windows,所以我们现在可以专注于此。
protocols - 将 CSP(内容安全策略)与自定义协议一起使用
我有点紧张,正在开发一个基金经纪人网站。
作为我们安全策略的一部分,CSP在我们的服务器上实施,但现在,我们正在实施与斯堪的纳维亚银行 ( BankID ) 提供的桌面软件的通信。
这样就出现了一个问题:要打开 BankID 桌面软件,应该点击一个带有自定义协议的链接,如下所示:
我相信您明白,我在通过我们的 CSP 政策允许此链接时遇到严重问题。我的搜索没有产生任何结果,而且我的想法已经用完了。
我曾尝试在协议下允许通配符域,因此:
如果我关闭 CSP,它会完美运行,所以这绝对是问题所在。
有人对此有经验吗?任何帮助是极大的赞赏。
编辑
经过几个小时的搜索,我在Mozilla Wiki上找到了以下内容:
我们需要一种应用程序交付机制来保证应用程序的完整性和真实性,并允许明确定义的应用程序和权限范围强制执行,以便在运行时保持完整性。
并进一步:
特权和认证的应用程序将通过一个独特的方案 (app://) 访问。域将对应于应用程序 ID。
我不确定这是否适用,但如果我没看错,这意味着 Mozilla 正在考虑如何解决这个问题。
java - 使用反射替换 java.net.URL URLStreamHandlerFactory 是个好主意吗?
在 Java 中,我们至少可以通过两种方式注册自定义协议处理程序:
- 通过设置系统属性'java.protocol.handler.pkgs'
- 使用 URL.setURLStreamHandlerFactory
更多详情请查看http://accu.org/index.php/journals/1434
我不能选择第一个选项,因为我必须向服务器(tomcat)类路径添加很多 jar 文件,以使处理程序实现对引导类加载器可见。此外,还需要一些初始化,这必须在应用程序上下文中完成。
第二个选项的问题是Factory只能注册一次(检查java.net.URL#setURLStreamHandlerFactory),不幸的是它是由Tomcat完成的。
我能做的是创建一个装饰器工厂,它将通过我的协议处理程序扩展现有的。比使用 relfection 将静态字段 URL#factory 设置为 null 并使用 URL#setURLStreamHandlerFactory 以标准方式注册(再次?)我的“decoratorFactory”。我只是想知道在这里使用反射是否是个好主意......?治安怎么样?
我想做这样的事情:
url - 通过href将参数传递给自定义协议的问题?
我创建了一个名为“myapp”的自定义协议,并尝试通过 href 标记将参数传递给它<a href="myapp://E:/file.txt">Click here</a>
。
myapp 协议如下所述:
单击锚链接时,它会引发错误,因为“文件名、目录名或卷标语法不正确”。
我猜通过<a href="myapp:E:/file.txt">
标签传递的参数没有被识别。
我不知道如何在这里转义斜杠(/)或任何特殊字符。
请帮我解决这个问题,或者让我知道我是否做错了。
java - 在哪里托管没有底层框架的 java 服务器?
我用一个非常基本的服务器制作了一个小的 java 应用程序。它只是几个类,并且在相当低的级别上工作,使用 main 和手动打开套接字。它还使用一个非常简单的自定义协议。
它在 localhost 上运行良好,我已准备好将其部署到服务器上,这样我就可以从 LAN 以外的位置开始使用该应用程序。
但是,我找不到任何地方来托管这该死的东西。理想情况下,我想找到一个可以上传可执行 jar 的服务,打开我想要打开的任何端口,然后运行可执行文件。当我改进服务器时,理想的服务还可以让我轻松上传新版本的 jar。它不一定是免费的,但这个应用程序最多有大约 4 个并发用户,所以我不关心可伸缩性,也不想为托管支付过高的价格。大概每月10美元就可以了。
我研究过 Heroku 和其他一些服务,但都要求您使用 Maven、J2EE、JSP 等。我没有使用任何这些,只是好的旧的 public static void main(String[] args)。
是否值得我花时间调整我的应用程序以适应其中一个?这会因为我想使用自定义协议而变得复杂吗?
javascript - 使用 Web 浏览器在客户端读取文件内容
我在我的每台客户计算机上都安装了一个软件,该软件定义了新协议,当我的客户从浏览器调用协议时,该软件将在该计算机上运行并执行一些文件传输操作。
例如,如果客户端LPL://-s 109.107.108.7 -f c:\tmp\file.big
在浏览器中发出该软件将运行并传输file.big
到服务器。
现在我在客户端定位完整文件路径时遇到问题,我知道现代浏览器出于安全原因阻止获取完整路径,但是我需要使用 web 读取客户端的文件内容。
有没有办法解决这个问题
javascript - 在 FireFox 浏览器中打开自定义协议..!
我创建了一个自定义协议myapp:
,就像使用 JavaScript 在客户端mailto:
打开一个exe一样。因此,每当我调用那里的 JavaScript 时,都会打开一个对话框,要求选择我想要打开的应用程序。我只是想设置它在代码中打开的默认应用程序并且不打开该对话框。我知道我可以在 Mozilla 浏览器的设置中手动从总是要求更改为设置默认值,但我希望通过代码进行设置。这样用户就不必做任何事情。可能吗?如果是,请指导我如何实现这一目标。
javascript - 检查浏览器是否支持使用 JavaScript 的自定义协议?
我有一个需要安装在 Windows 机器上的应用程序,它使用像“myapp://”这样的自定义协议。所以我在网页上有一个按钮,点击它会打开该应用程序。当我点击按钮时,我需要检查浏览器是否支持该协议,如果是,打开应用程序,如果不是,显示错误。互联网上有几个黑客可用,我尝试了一些,但似乎没有用。我想以更清洁的方式做到这一点。有人可以帮忙吗?
swift - 没有完全理解自定义协议的概念,Swift 3
我提前为提出这样一个愚蠢的问题道歉,但我并没有从其他答案中得到我想知道的东西。这是来自 Ray Wenderlich iOS 课程的自定义委托协议的示例代码
尽管协议的定义很明确,但它是一种必须遵守才能使用的合同。但这里是协议的功能在符合类的主体中的实现
并且没有实际使用控制器参数,didFinishAdding 是什么?据我了解, didFinishAdding 只是内部参数item的外部名称。但是它是如何工作的,如何从名为AddItemViewController的控制器将ChecklistItem发送给符合要求的委托的协议主体中理解它,或者它是某种预定义的函数类型?
redirect - 应用程序注册只允许 http(s) 作为重定向 URI
我想构建一个桌面应用程序,并且需要重定向 URI 类似于my-app://soundcloud/callback
. 在应用程序注册表中,无法在输入字段中输入此类重定向 URI,因为只允许使用http
和https
协议。如何以及在哪里可以将重定向设置为my-app://soundcloud/callback
?