我正在使用旧版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();
}
}
答案 0 :(得分:0)
似乎与CORS preflight有关的问题。实际上触发了两个请求。第一个是预检,鉴于我的控制器操作实际上不合法,因此不会返回任何数据。第二个请求/响应具有按预期适当加载的数据。