繁体   English   中英

提高第 3 方应用程序的可用性

[英]Improve the usability of 3rd party application

我们使用的第 3 方应用程序导致了很多问题,因为用户在单击Launch按钮之前没有单击Register按钮,或者如果他们先单击Register ,则带有RegisterLaunch按钮的此详细信息页面将刷新并转到他们的投资组合。 然后他们必须在他们的作品集列表中重新找到该项目。

我认为第 3 方应用程序是 .NET 并且使用 Knockout.js 并且不允许嵌入到 Frames 中。

有哪些选项可以为用户提供指导或在理想情况下使此过程不那么痛苦?

我希望提供一个内部网页,只需单击一下按钮即可发送RequestLaunch操作。 我发布了一个较早的问题Knockout data-bind click但无法得到一些工作。

关于 SO 似乎有一堆类似的问题,但我不确定这些问题/答案是否用于自动单击自包含应用程序的按钮,因为我想从 3rd 方应用程序外部执行此操作(我什至可以访问他们的视图模型?)。 此应用程序阻止将其嵌入到 Frames 中。

  • 使用 jQuery 在页面加载时自动单击按钮元素
  • 如何在淘汰赛js中自动点击按钮

  • 目前我有一个来自内部网站的链接,可以并排打开两个浏览器窗口。 一个人去第 3 方和第 2 个窗口,并附有说明。 这没关系,但我们发现人们不想阅读。 我真的很想单击一个按钮,或者至少能够从内部网页一次发送一个请求。 或者,如果可能的话,可能会在他们的网站上覆盖一个兜风类型的指南。

这是第 3 方按钮代码

    <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>

您基本上想破解第 3 方应用程序,但您可以控制环境,因此听起来并非不可能。 (我不会谈论我是否认为这是一个好主意,我只会列出您可能拥有的一些选择。)

删除 X-Frame-Options 标头

您是说第 3 方应用程序不允许嵌入框架中。 这是由响应头完成的,很可能是X-Frame-Options (或者它可以是Content-Security-Policy: frame-ancestors ,但实际上并不重要)。 您所要做的就是删除该标题,瞧,该应用程序可以加载到框架中。

要删除标头,您将需要某种代理。 如果应用程序在普通 http 上提供服务,这真的很容易,任何类型的 http 代理都可以删除相应的响应标头。 如果它是在 https 上提供的,你必须做一些事情才能让它真正工作(创建一个证书颁发机构,将根证书添加到客户端作为受信任的根,使用代理连接到应用程序,除了删除标题,替换带有您自己的 https 证书,然后您的客户端将信任该证书)。

请注意,这会削弱第 3 方应用程序的安全性,并使其容易受到类似于点击劫持的攻击(以及像素完美计时等,所有与帧相关的攻击)。

通过代理注入自定义脚本(编辑:稍后添加

使用上述代理,您无需删除X-Frame-Options 最好将您自己的 javascript 注入到第 3 方应用程序页面中,因为它可以完全访问应用程序 DOM,因此可以在原始页面上做任何您想做的事情。 例如,它可以改变行为,以便单击适当的按钮。 :) 如果我无法在客户端上安装浏览器扩展,我会这样做(见下文)。

使用自定义客户端

您可以创建一个自定义客户端,而不是使用浏览器作为客户端,它实际上充当浏览器,但忽略上述标头。 这也可以轻松完成您想要的点击。 缺点是您的用户必须启动自定义客户端而不是使用他们的浏览器来使用应用程序。 在有 Xamarin 和 WKWebView 之类的东西的移动环境中,这可能更容易做到。

浏览器扩展

自定义浏览器想法的一个更简单且可能更可行的变体是浏览器扩展。 它可以在应用程序 url 上激活,并且可以很容易地在适当的页面上进行您想要的点击(浏览器扩展可以请求对页面的完全访问,而不管标题如何)。 您只需在客户端上安装一次扩展程序。 如果必须的话,我可能会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM