Подтвердить что ты не робот

Как включить перекрестный домен POST-IN в PHP?

Я связываюсь, чтобы отправлять данные POST с одного сайта на другой (оба сайта были нами разработаны). Проблема в том, что переменные 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. Но если это так, мне кажется странным, что я возвращаю информацию, но данные POST пропали без вести.

4b9b3361

Ответ 1

То, что у вас должно работать, - формы пришли до политики одного и того же происхождения - вам разрешено отправлять в разные домены.

Если мне угрожать догадка, я бы сказал, что там 301-й или 302-й редирект попадает туда? Например, следуйте за заголовками HTTP с помощью Firebug.

Ответ 2

Как говорили другие, не должно быть никаких проблем с этим. Я бы предложил заменить ваш test.php script чем-то простым, вроде этого

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

Вы должны найти, что это работает, а это значит, что виноват где-то в "реальном" script...

Ответ 3

Возможно, также времяпровождение:

Если вы отправляете POST на домен .com, убедитесь, что он не перенаправляется на сайт www.domain.com. Переадресация не учитывает переменные POST, только GETVariables.

Если он перенаправляется на сайт www.domain.com, добавьте www. в вашем POST-действии

Ответ 4

Спасибо. Я также обнаружил, что перенаправление на www и https блокирует выполнение моего запроса $ _POST. Изменяя мои действия, чтобы включить https://www. Я исправил свою проблему. Спасибо