Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中启用跨域发布?_Php_Post_Security - Fatal编程技术网

如何在PHP中启用跨域发布?

如何在PHP中启用跨域发布?,php,post,security,Php,Post,Security,我想把帖子数据从一个网站发送到另一个网站(两个网站都是我们开发的)。 问题是,如果从另一个域请求页面,则POST变量不可用。 即使我在本地测试它,但指定了完整的url,POST数据也会消失 因此,这将起作用: <form method="POST" action="test.php"> 但这不会: <form method="POST" action="http://example.com/test.php"> 以下是该页面的HTML: <html>

我想把帖子数据从一个网站发送到另一个网站(两个网站都是我们开发的)。 问题是,如果从另一个域请求页面,则POST变量不可用。 即使我在本地测试它,但指定了完整的url,POST数据也会消失

因此,这将起作用:

<form method="POST" action="test.php">

但这不会:

<form method="POST" action="http://example.com/test.php">

以下是该页面的HTML:

<html>
<head>
    <title></title>
</head>
<body>
    <form method="post" action="http://example.com/test.php">
        <input type="text" name="request" value="" id="" />
        <input type="submit" value="" id="" />
    </form>
</body>
</html>


在我得到这样的评论后,我在另一台服务器上测试了它,结果一切都很好。这可能与第一台服务器启用https有关。但如果是这种情况,我会觉得很奇怪,我确实得到了信息,但只是帖子数据丢失了。

您所拥有的应该可以正常工作-表单在同一来源政策之前就已经存在-您可以提交到不同的域


如果我冒昧猜测一下,我会说有一个301或302重定向不知何故进入了那里?以Firebug为例,请遵循HTTP标头。正如其他人所说,这样做应该没有问题。我建议用一些简单的东西替换test.php脚本,比如

<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";

也可以节省时间:

如果您发布到domain.com,请确保它不会被重定向到www.domain.com。 重定向不考虑POST变量,只考虑GETvariables


如果它确实被重定向到www.domain.com,请在您的帖子操作中添加www.

谢谢。我也发现重定向到www和https阻止了我的$u POST请求的性能。 通过将我的操作更改为包含。 我解决了我的问题。
谢谢

这应该行得通。您可以发布整个表单吗?请参见下面(仅更改了url以保护无辜者:)@coen-我已更新您的问题以添加您的评论-下次尝试编辑您的问题,而不是在实际表单中发布评论的更新,在表单标记的action属性中,URL的开头是否有HTTP?像那样的一点打字错误就足以引起问题。它应该是这样的:action=“”@Stephen-它就在那里,在评论中被过滤掉了,但我把它放回了原始问题中。这正是我所做的,我是如何验证POST变量确实只在2个案例中的1个案例中缺失的。它们确实是重定向;从http到httpsIs,有没有解决方案?