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

时间:2012-10-06 18:50:16

标签: http iis redirect iis-7

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

我对IIS及其配置非常不熟悉,所以我想这很容易解决,但是如何确保在IIS上的301重定向上保留POST请求?

1 个答案:

答案 0 :(得分:1)

如果您通过301发布,则会删除发布数据。您需要创建重新解析数据并再次发送的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;
}
相关问题