我们使用的一个第三方应用程序造成了很大的问题,因为用户在点击Launch
按钮之前没有点击Register
按钮,或者如果他们先点击了Register
,这个同时包含Register
和Launch
按钮的详细信息页面会刷新并进入他们的投资组合。他们必须在他们的投资组合列表中重新找到该项目。
我相信第三方应用程序是一个.NET,使用的是knockoutiderjs,不允许嵌入框架。
有哪些选项可以为用户提供指导,或者在理想情况下减少此过程的痛苦?
我希望提供一个内部网页,可以发送Request
和Launch
操作与一个按钮点击。我张贴了一个较早的问题Knockout data-bind click,但无法得到工作。
在SO上似乎有一堆类似的问题,但我不确定这些问题/答案是否是为了自动点击自包含应用程序上的按钮,因为我想这样做,如果从第三方应用程序之外(我甚至可以访问他们的视图模型吗?)。这个应用程序阻止将其嵌入框架。
- Auto-click button element on page load using jQuery
- How to auto click button in knockout js
- 目前我有一个内部网站的链接,打开两个浏览器窗口并排。一个去第三方和第二个窗口的指示。这是可以的,但我们发现人们不想阅读。我真的希望有一个单一的按钮点击或至少能够发送一个请求的时间从内部网页。或者也许覆盖一个joyride类型的指导到他们的网站,如果可能的话。
这是第三方按钮代码
<a class="btn btn-large btn-blue" href="javascript:void(0);"
data-bind="click: $root.clickAction.bind($data, ActionType)">
<span data-bind="text: Title">Register</span></a>
1条答案
按热度按时间kknvjkwl1#
你基本上想黑掉第三方应用程序,但你控制着环境,所以听起来不是不可能的。(我不会说我是否认为这是一个好主意,我只会列出你可能有的几个选择。)
删除X-Frame-Options标题
你是说第三方应用不允许被嵌入到一个框架中。这是通过一个响应头来完成的,最有可能是
X-Frame-Options
(或者它可以是Content-Security-Policy: frame-ancestors
,但实际上这并不重要)。你所要做的就是删除这个头,瞧,应用可以被加载到一个框架中。要删除头,你需要某种代理。如果应用程序是在普通http上运行的,这很容易,任何http代理都可以删除相应的响应头。如果应用程序是在https上运行的,你需要做一些事情来让它真正工作(创建证书授权机构,将根证书作为受信任的根添加到客户端,使用代理连接到应用程序,并且除了移除头部之外,将https证书替换为您自己的证书,这样您的客户端将信任该证书)。
请注意,这将削弱第三方应用程序的安全性,并使其容易受到类似于clickjacking的攻击(以及pixel perfect timing等,所有与帧相关的攻击)。
通过代理插入自定义脚本(* 编辑:稍后添加 *)
使用上述代理,您不需要删除
X-Frame-Options
。将您自己的javascript注入第三方应用程序页面会更好,因为它可以完全访问应用程序DOM,所以可以在原始页面上执行任何您想要的操作。例如,它可以更改行为,以便单击相应的按钮。:)如果我不能在客户端安装浏览器扩展,我会这样做(见下文)。使用自定义客户端
除了使用浏览器作为客户端,您还可以创建一个自定义客户端,它实际上充当浏览器,但忽略上面的头文件。这也可以轻松地完成您想要的点击操作。缺点是您的用户必须启动自定义客户端,而不是使用浏览器来使用应用程序。在移动的环境中,这可能更容易做到,因为您有Xamarin和WKWebView等工具。
浏览器扩展
自定义浏览器的一个更简单也可能更可行的变体是浏览器扩展。它可以在应用程序url上激活,并且可以非常容易地在相应的页面上执行你想要的点击操作(浏览器扩展可以请求对页面的完全访问,而不考虑标题)。你只需要在客户端上安装一次扩展。如果有必要的话,我可能会这样做。