Http 配置IIS通过301重定向传递POST数据

Http 配置IIS通过301重定向传递POST数据,http,iis,redirect,iis-7,Http,Iis,Redirect,Iis 7,我目前正在为客户端在IIS 7上托管的站点上工作,该站点配置为重定向任何裸域请求以重定向到“www”子域。但是,这导致网站上的一些表单出现问题,这些表单指向裸域。提交表单时,它会转发到“www”子域上的正确页面,但POST参数丢失-无论原始请求的请求类型如何,都会使用HTTP GET请求请求“www”子域上的页面 我对IIS及其配置非常不熟悉,因此我认为这是一个很容易修复的问题,但如何确保POST请求通过IIS上的301重定向得到保留?如果通过301进行POST,POST数据将被删除。您需要创建

我目前正在为客户端在IIS 7上托管的站点上工作,该站点配置为重定向任何裸域请求以重定向到“www”子域。但是,这导致网站上的一些表单出现问题,这些表单指向裸域。提交表单时,它会转发到“www”子域上的正确页面,但POST参数丢失-无论原始请求的请求类型如何,都会使用HTTP GET请求请求“www”子域上的页面


我对IIS及其配置非常不熟悉,因此我认为这是一个很容易修复的问题,但如何确保POST请求通过IIS上的301重定向得到保留?

如果通过301进行POST,POST数据将被删除。您需要创建重新解析数据并再次发送的eq php脚本

/* FOR test */

$_POST['value'] = 123;
$_POST['key']  = 888;
# Online $_POST check
$_GET['redirect'] = 'https://posttestserver.com/post.php'; 
/* END: FOR test */


if( filter_var($_GET['redirect'], FILTER_VALIDATE_URL) ) {

    if ( is_array($_POST) ) :

        echo '<form method="post" action="'. $_GET['redirect'] .'" name="f">';

        foreach($_POST as $i => $v){
            echo '<input type="hidden" name="'. $i .'" value="'. $v .'">';
        }

        echo '</form> <script> document.f.submit(); </script>';

    else : // IF _GET

        $tmp = $_GET['redirect'];
        unset($_GET['redirect']);
        $ur = http_build_query($_GET);
        header("Location: " . $tmp . '?' . $ur);
    endif;
}
/*用于测试*/
$_POST['value']=123;
$_POST['key']=888;
#在线美元邮政支票
$\u GET['redirect']='https://posttestserver.com/post.php'; 
/*完:测试*/
if(filter\u var($\u GET['redirect'],filter\u VALIDATE\u URL)){
如果(是数组($\u POST)):
回声';
foreach($\以$i=>$v的形式发布){
回声';
}
回显“document.f.submit();”;
else://IF\u
$tmp=$_GET['redirect'];
取消设置($_GET['redirect']);
$ur=http\u build\u query($\u GET);
标题(“位置:“.$tmp.”?“.$ur”);
endif;
}