【问题标题】:HTML Form POST Cross DomainHTML 表单 POST 跨域
【发布时间】:2012-01-19 19:43:34
【问题描述】:

我有一个非常简单的 HTML 表单,它使用 POST 并且它的操作在我的 Web 服务器上调用 PHP 脚本。

这是踢球者...包含表单的 html 不是托管在同一台服务器上,而是存在于不同的域中。在没有解释这个问题的情况下,出于商业原因必须这样做。它们需要存在于这些特定域中。

当我提交表单时,我可以正确访问 PHP 脚本,但随后我尝试提取 POST 数据,但它消失了。我认为这是一个安全问题,因为我暂时将表单放在与 PHP 相同的服务器上,并且运行良好。

有没有办法让它与两个单独的域一起使用?提前致谢。

编辑:

PHP 代码(emailTemplate.php):

<?php
var_dump($_POST);
?>

HTML 表单:

<form name="emailForm" id="emailForm" method="post" onsubmit="return beforeSubmit();" action="https://***.***.com/emailTemplate.php">
    <textarea rows="15" cols="75" id="myHtmlText" name="myHtmlText"></textarea>
    <input type="text" id="toAddr" name="toAddr" size="60"/>
    <input type="text" id="fromAddr" name="fromAddr" size="60"/>
    <input type="text" id="subjectLine" name="subjectLine" size="60"/>
    <input type="submit" name="Submit" value="Email Letter">
</form>

【问题讨论】:

  • 理论上,你所做的应该不会造成任何问题。听起来(a)接收 POST 数据的 PHP 脚本或发送它的网络表单中存在错误,或者您的 PHP 脚本或服务器配置中有某种安全措施阻止了该帖子。不幸的是,我们能做的最好的就是推测,除非你可以发布你的一些代码。
  • @Aaron 如果有帮助的话,我添加了代码。谢谢。
  • 似乎在 Firefox 中有效,但在 IE 中无效。 IE 给出 XSS 警告。

标签: html post cross-domain


【解决方案1】:

如果您只是在 IE 中遇到问题,则可能是他们的 XSS 过滤器造成的。 This article 提供了禁用它的详细信息。

要完全避免此问题,请尝试将表单发布到服务器上的 PHP 脚本,并在该脚本中创建一个 cURL 会话,将表单发布到其他脚本。 XSS 事务独立于客户端的 Web 浏览器发生,避免了这些基于浏览器的安全限制。

【讨论】:

  • 如果结果包含任何相对 URL,这将不起作用。客户端将解释这些 URL 相对于您的域,而不是远程域。
猜你喜欢
  • 2013-04-15
  • 2017-07-14
  • 2013-04-10
  • 2015-04-26
  • 2019-03-29
  • 1970-01-01
  • 2013-10-21
  • 2011-07-26
  • 2013-03-02
相关资源
最近更新 更多