0

假设我的 Web 应用程序代表向我的应用程序提供凭据的用户执行操作,因此该应用程序可以对第三方服务进行 API 调用。顺便说一句,这是为了向这个第三方网站发布产品报价(有点像 eBay,但规模较小)。

现在,使发布变得容易的一种超级方便的方法是重用复杂的 Web 表单,第三方服务必须接受对经过身份验证的用户提供的产品。这个想法是填充他们的 Web 表单并将客户端浏览器重定向到它,以便用户可以使用复杂且熟悉的 Web 表单在那里编辑内容。这将是最好的用户体验和最少的实施工作。

但是,这不是一个记录在案的方法。更重要的是,它不能以简单的方式工作,例如从请求参数(GET 或 POST)填充表单字段。Web 表单不能那样工作。

可能有替代方案。我的应用程序可以代表用户打开与第三方应用程序的会话,提交所有数据以便将其存储在他们的数据库中,然后向用户的浏览器发送它需要接管我的服务器应用程序在他的服务器上打开的会话所需的所有数据代表。请注意,我还没有尝试过;我认为如果第三方应用程序将会话绑定到 IP 号码(无论是否声音,应用程序可能会这样做),它可能会失败。

但是不可能让打开 HTTP 会话的服务器程序将接管该会话所需的所有信息写入 HTML/Javascript 文档并将该文档发送到用户的浏览器,Javascript 在浏览器中执行并组装这样的请求直接在第三方表单上使用浏览器时组成的,我一直在使用 HttpFox 观察?

所有信息,即一切 HTTP;显然不可能将服务器的 IP 号传递给客户端......但是所有的 cookie 和参数。然后,在浏览器中执行的 Javascript 将不得不使用我以某种方式在文档中传递的信息(可能在脚本部分中)来编写对第三方网站的请求,该请求直接进入服务器应用程序打开的会话. 这意味着来自我的域的文档将设置 cookie(添加请求标头),然后让用户的浏览器执行该请求。

所以换句话说,技术上是否可以将会话从服务器传递到客户端?

你会如何在 Javascript 中做到这一点?

更新

根据另一个问题的答案:您不能为另一个域设置 cookie。允许这样做会带来巨大的安全漏洞。表明我不是前端开发人员。

还没有放弃。XmlHttpRequest对象来了。也许这可以被滥用于我的邪恶目的?

第二次更新

所以我尝试了XmlHttpRequest. 坏消息(对我和这个特殊情况):它似乎无法使用XmlHttpRequest,因为(使用当前的 Firefox)我精心伪造的请求是根据似乎将成为跨域资源的 W3C 标准的内容重写的共享,因此简单地删除了标头,Cookie而虚拟标头则简化为. 现在坦率地说,这正在破坏游戏。我很失望。MoinGurkeAccess-Control-Request-Headers: gurke,moin

4

1 回答 1

0

好吧,放弃。我想做的事情是不可能的。这样做的原因是所谓的同源策略使浏览器更安全。请参阅其他答案以获取一些指示。看来我对 W3C跨域资源共享工作草案的评估是错误的,该草案允许同源策略中的例外情况。因此,如果这被广泛实施,它可能是可行的。但总体而言,这种尝试存在太多的假设和不确定性。

呵呵。得到它的工作。:)

毕竟,其中包含的 cookie 和会话 ID 是不需要的。我已经弄清楚如何获取该请求所需的所有参数,并通过向客户发送自动提交表单将它们提供给客户:

<body onload="document.forms[0].submit()">
<form action="..." method="post">
...

然后客户端进入他自己的会话。效果很好。只要他们不改变界面。我设置了测试来监控他们的形式并提醒我采取行动,他们以不兼容的方式改变了东西。

于 2012-02-09T20:07:13.913 回答