如何将POST数据发送到外部框架中的外部页面?

时间:2013-03-08 14:47:23

标签: php html forms post frame

我在设法完成我在标题中解释的问题时遇到了问题。我想知道是否有人可以帮助我。

所以我会再详细解释一下:

我有一个网页,其中包含一个将POST数据发送到外部URL的表单(不是mysite.com,而是hissite.com,我希望你明白了) 我使用HTML框架在我自己的网站(例如mysite.com/hissite)中创建一个页面,以隐藏其他网站的实际URL。 问题是我无法将表单输入传递给hissite.com,而是通过我网站内的框架。

我基本上想要以下内容: 1.用户登录我的网站。 2.我的登录表单将登录信息传递给其他网站。 3.用户已登录,但重定向到另一个网站,他被重定向到我的网站内包含另一个网站的框架。

我不知道如何更好地解释它,但我希望有人能理解我并帮助我完成我的项目。

我必须提到我网页上的表单与其他网站上的表单具有相同的结构(字段,字段名称等)。所以我相信通过框架传递输入会非常容易。好吧,......我意识到这并不容易。

以下是表格:

<form action="/home/signin" method="post" name="loginForm" class="large-form" id="loginForm" >
  <fieldset>
    <label for="username">Username</label>
    <input type="text" name="username" tabindex="1" id="username" value="" />
</fieldset>
<fieldset>
  <label for="password">Password</label>
  <input type="password" name="password" tabindex="2" id="password" value="" />
  <input type="hidden" name="themeName" value=""/>
</fieldset>
<br/>
<div id="login-button">
  <input type="submit" value="Log In" tabindex="3" />
</div>

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果没有使用您的方法代理第三方网站,这是不可能的。

你可以:

通常使用框架

这需要将表单上的target属性设置为框架名称,将action设置为第三方网址。

只要第三方网站未在其登录表单上对CSRF attacks实施任何保护,这将有效。

此方法不会为您提供用于登录的凭据(尽管您可以使用JavaScript嗅探它们)。

代理整个网站

除了您将action设置为您网站上的网址外,这与上述内容相同。然后,您必须使用服务器端代码向第三方站点发出HTTP请求(在您的服务器上维护每用户cookie jar)。对于每个请求,您必须解析每个响应并更改HTML,CSS,JavaScript等中的任何URL,以便它们继续工作(因为相对URI会失败)。


无论哪种方式 - 要求用户在您的第三方网站上输入他们的凭据都是一个非常可疑的请求。这样的凭证应该是保密的而不是共享的。

答案 1 :(得分:-1)

在这种情况下,您需要使用ajax调用,将所需信息发送到其他页面,然后您可以根据需要继续处理数据,只需将表单提交调用为javaScript,如:

$.ajax({
        url: siteUrl,
        type: "post",
        async:true,
        dataType: 'json',
        success: function(data){
your function
        },
        error: function(e){
your error function
        }
    });