我正在构建一个 API 来激活和验证 PHP 脚本的活动安装,但我得到了“从源 'http://domain.te/requests/verify' 访问 XMLHttpRequest at 'http://api.domain.te/requests/verify'”。 te'已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头”控制台上出现错误。
这是我的 jQuery 代码:
function verify() {
$.post(url+"requests/verify", {
domain: domain
}, function(data) {
if (data.success === true) {
return true;
}
});
return false;
}
我已经阅读了类似的问题并尝试了所有建议,但似乎没有一个有效。
在我的 PHP 代码中,我有:
public function verify()
{
$data['success'] = false;
$data['status'] = 'error';
$data['message'] = 'An error occurred';
if ($this->actives_m->check($this->request->getPost("domain")??""))
{
$data['success'] = true;
$data['status'] = 'success';
$data['message'] = 'Product is Active!';
}
else
{
$data['message'] = 'Product is Inactive!';
}
$this->response->setHeader('Access-Control-Allow-Origin', '*');
$this->response->setHeader('Access-Control-Allow-Methods', 'GET, POST');
return $this->response->setJSON($data);
}
我也尝试在脚本的开头设置标题,<?php但仍然不起作用。我还尝试了内置的 PHPheader()函数,如下所示:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
我什至修改了我的 JS 看起来像:
function verify() {
$.ajax({
url: url+"requests/verify",
type: "POST",
dataType: "JSON",
data: {domain: domain},
crossDomain: true,
success: function(data) {
if (data.success === true) {
return true;
}
}
});
return false;
}
到目前为止似乎没有任何效果,我应该从这里去哪里?
更新: 我意识到如果我使用纯 Javascript,例如:
const xhr = new XMLHttpRequest();
xhr.open('GET', url+"requests/verify");
xhr.onreadystatechange = function(data) {
if (data.success === true) {
return true;
}
}
xhr.send();
它按预期工作,但我必须使用 jQuery 来保持我的代码统一,并供将来参考。
临摹微笑
呼如林