表单提交响应 301 或 302

Posted

技术标签:

【中文标题】表单提交响应 301 或 302【英文标题】:Form submit response 301 or 302 【发布时间】:2012-12-07 07:45:44 【问题描述】:

我的网站上有一个表单,每次提交此表单时,我都会收到 301 烫发,然后是 302 重定向,然后是另一个 302 重定向。由于这些重定向,我的数据没有提交。我没有运气找到这些重定向。在目录的根目录中没有导致此问题的 .htaccess 文件。

我在哪里寻找摆脱重定向?任何提示将不胜感激。

提交时我的开发者工具转到 301、302、302。

这是我表单的开始。

<form action="index.php?view=ticket_submit" method="POST" name="QContact" runat="vdaemon">

当这个提交时,我有一个 case 语句查找 ticket_submit。由于 var_dump 和 exit 方法,它甚至没有到达 ticket_submit 。它只是回到根 index.php 文件。

private function ProcessView($type)
    $ticket = new Ticket();
    $ticket->CurrentUser = $this->CurrentUser;
    $ticket->TicketUser = $this->CurrentUser;
    $ticket->setBlankTickethtml();
    $title = 'New ROI';
    $prior_count = count($this->Containers);
    $_SESSION['vdaemon'] = '1';
    if($_SESSION['al'] == 't' && $type['view'] == '')
        $type['view'] = 'summary';
    

    switch($type['view'])
        case 'ticket_edit':
            $ticket->ticketid = (int)$this->Request['ticketid'];
            $ticket->TicketUser = array();
            $ticket->fillTicket();

            if(($this->CurrentUser['userid'] != $ticket->TicketUser['userid']) && ($_SESSION['al'] == 't' || $_SESSION['al'] == 'r'))

                $ticket->setViewTicketHTML();
                $title = "Error: You can only Edit items you have created.";
                $_SESSION['vdaemon'] = '0';
             else 
                $ticket->setEditTicketHTML();
                $title = 'Edit ROI';
                $_SESSION['vdaemon'] = '1';
            
            break;

        case 'ticket_submit':
            var_dump('test');
            exit();
            $ticket->ticketid = (int)$this->Request['ticketid'];
            $ticket->TicketUser['useremail'] = $this->Request['useremail'];
            $ticket->saveTicket(0);
            $_SESSION['vdaemon'] = '0';             
            if($_REQUEST['viewquick'] == 'quick')$quick = 'ticket_quick_view';else$quick = 'ticket_filed';
            if($_REQUEST['edit'] == 'yes') 
                echo 'works';
            else 
                header("Location: ?view=".$quick."&ticketid=".$ticket->ticketid);
                echo 'workss';
               
            exit;
            break;

【问题讨论】:

您查看过您的 apache 错误日志吗?也许一点代码可以说明问题? apache 错误日志在哪里? @wowzuzz 在标有“日志”的文件夹中。这是部署环境,还是本地测试环境?你用什么来托管它?您是否有任何虚拟主机与此特定站点共享命名空间? 这是一个已部署的环境。它位于使用 apache 和 lighttpd 的云服务器上。不,没有虚拟主机。 我摆脱了 301 错误和另一个 302,因为我将它移到了一个新文件夹。现在它向我显示 302。除非 302 已修复,否则我的数据不会 POST 对吗? 【参考方案1】:

我最终修复了它,这就是原因所在。

需要修复三件事。

第一件事是我需要修复对 vdaemon 库的引用。这条路全都搞砸了。之后,我在两个地方摆脱了标头重定向。一个在单独的文件夹中,一个在我的 index.php 上,我完全错过了(以为我检查过)。它正在执行 302 重定向,因为标头在那里,但在整个服务器和 index.php 上的不同文件夹中。

下次我会知道要找什么。感谢大家在这里的努力。 :)

确保在处理这些错误时首先查找此代码

header("Location: http://www.foo.com");

【讨论】:

以上是关于表单提交响应 301 或 302的主要内容,如果未能解决你的问题,请参考以下文章

在Laravel中提交POST表单后出现302错误

node服务器重定向

Json 给 301 永久移动

表单标签中的按钮不会提交或响应 Javascript/Jquery

表单标签中的按钮不会提交或响应Javascript / Jquery

Javascript - 根据ajax响应停止表单提交[重复]