Не могу получить доступ к данным запроса в производственном процессе, но могу в локальной среде - PullRequest
0 голосов
/ 05 июня 2019

Я работаю с унаследованным приложением 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 голосов
/ 18 июня 2019

Похоже, проблема связана с CORS preflight .Два запроса фактически запущены.Первый - это предпечатная проверка, которая, учитывая, что действие моего контроллера не возвращает никаких данных, поскольку на самом деле это недопустимый почтовый запрос.Во втором запросе / ответе данные должным образом загружены, как и ожидалось.

...