无法在生产环境中访问请求数据,但可以在本地环境中访问

时间:2019-06-05 13:46:58

标签: ajax http http-headers cakephp-2.0 cakephp-2.1

我正在使用旧版Cakephp 2应用,需要通过另一个域上的AJAX发布来创建用户。

我的整个工作环境在本地环境中都很好,但是一直在与产品环境作斗争。

我正在使用Postman来形成一致的Post请求,并设置各种标头以及设置数据值。

本地: 我将发布请求发送到URL,并将整个请求对象var_dump到响应中。我可以看到我的数据已填充。 $ this-> request-> data ['email']完全返回我的期望。

生产: 我部署了完全相同的代码,并且我的数据数组完全为空。

我已经设置了Access-Control-Allow标头,但是没有任何身份验证问题。我可以在应用程序中与请求进行交互,但无法访问任何数据。该请求是相同的请求,只是端点不同。

我正在运行相同版本的PHP和完全相同的代码库。

有人能想到可能影响请求数据的任何环境因素吗?

这是我的控制器代码简介:

public function remoteadd() {

        var_dump($this->request);
        if ($this->request->is('ajax')) {
            $this->disableCache();
                $this->autoRender = false;

                $this->response->type('json');

                $this->User->create();
                $gen_pass = $this->generatePassword();
                $this->request->data['password'] = $gen_pass;

                $emailAddr = $this->request->data['email'];


                // Check if this email exists
                $conditions = array(
                    'User.email' => $emailAddr,
                );

                if (!$this->User->hasAny($conditions)) {

                    if ($this->User->save($this->request->data)) {


                        $this->response->statusCode(200);
                        $this->response->body(json_encode(
                            array('status' => 'success', 'message' => 'New account successfully created')
                        ));

                    }

                } else {

                    $this->response->statusCode(500);
                    $this->response->body(json_encode(
                        array('status' => 'error', 'message' => 'Email address already exists')
                    ));

                }


                $this->response->send();
                $this->_stop();
        }


    }

1 个答案:

答案 0 :(得分:0)

似乎与CORS preflight有关的问题。实际上触发了两个请求。第一个是预检,鉴于我的控制器操作实际上不合法,因此不会返回任何数据。第二个请求/响应具有按预期适当加载的数据。