获取JSON有效负载返回404状态且没有可用的POST数据

时间:2014-03-19 05:34:32

标签: php jquery json codeigniter apache2

我遇到了一个ajax身份验证调用的奇怪问题。我已经看到这个问题偶尔以不同的形式提出,但没有任何答案对我的所有症状都有效。

我有一个在虚拟框中运行的ubuntu服务器12.04LTS VM实例。 vm正在运行apache2和php5。它偶尔会给我以下错误:

[ 1074.908203] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 1074.909669] ata3.00: failed command: FLUSH CACHE
(blah blah blah...i'm typing this)
[ 1074.909934]          res 40/00:01:00:00:00/00:00:00:00:00/40 Emask 0x4 (timeout)
[ 1074.910844] ata3.00: status: { DRDY }

我确信这是因为vm .vdi在我的WD Green 2TB上,而且我正在运行一些正在努力追赶他们的区块链的虚拟货币守护进程。我有一个ssd替换明天到达的vm的驱动器,所以我不担心担心要解决这个问题,但我觉得这可能是相关的

在全局js文件中,我有

$.ajaxSetup({
    dataType: 'json',
    type    : 'POST'
});

在其他js文件中我有一个简单的

$.ajax({
    url     : '/authenticate/login',
    data    : {
        email   : email,
        password: password
    },
    success : doLoginCallback
});

发生在click / touchstart上(此时没什么了不起的)

在chrome和firefox中使用

(使用ie),我可以验证参数是否在firebug中传递给Web服务器

Parametersapplication/x-www-form-urlencoded
email       user@domain.com
password    password1

Source
email=user%40domain.com&password=password1

我的Authenticate->login方法:

class Authenticate extends Core
{
...

public function login()
{
    if($this->input->is_ajax_request())
    {
        $email = $this->input->post('email');
        $password = $this->input->post('password');
        $return = array('success' => false);

        if($email && $password)
        {
            ...(it's not getting this far)...
        }
        else
        {
            $return['err_data'] = array(
                'email'     => $email,
                'password'  => $password,
                'post'      => $_POST
            );
        }

        echo json_encode($return);
    }
    else
    {
        header('Location: /');
        exit();
    }
}
...
}

它在json中响应,但是有404状态

{"success":false,"err_data":{"email":false,"password":false,"post":[]}}

"NetworkError: 404 Not Found - http://myvm/authenticate/login"

似乎$_POST数组是空的??

我认为这必须是我缺少的apache2配置中的内容;这工作直到我必须在这个vdi上创建一个新的vm实例。

TLDR,我知道,但感谢您的任何想法/帮助!

1 个答案:

答案 0 :(得分:0)

感谢@Lekensteyn找到this回答,我发现mod_rewrite没有启用。在ubuntu服务器中为apache2启用mod重写:

sudo a2enmod rewrite

并重新启动apache

/etc/init.d/apache2 restart