我试图使用我的网站作为我的angularjs应用程序的mysql后端但是当我尝试将数据发布到服务器时我遇到了这个错误
XMLHttpRequest无法加载www.domain.com/backend_script.php。 No' Access-Control-Allow-Origin'标题出现在请求的上 资源。起源' 127.0.0.1:60728'因此是不允许的 访问。响应的HTTP状态代码为500。
(我删除了https://
和东西,因为我的帖子链接太低了,无法发布链接)
我在域中的php文件顶部添加了这个只是为了测试但是它仍然无法使用标头集,这就是我的脚本的样子。
<?php
require_once 'adb-functions.php';
header('Access-Control-Allow-Origin: http://127.0.0.1:60728/');
$data = json_decode(file_get_contents("php://input"));
$q = trim($data->query);
$all = $data->all;
//print_r(2);
function render($query)
{
global $q;
$renderedQb = '';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $q, $commands);
//print_r($commands[0]);
$commands = $commands[0];
if($commands[0] ==="get"){
if(trim($commands[1]) === "all") {
$renderedQ = "SELECT * FROM `".$commands[2]."`;";
return $renderedQ;
}
elseif (!empty($commands[4])) {
if($commands[4]==='spec')
{
$renderedQ = "SELECT * FROM `".$commands[1]."` WHERE `".$commands[2]."`='".$commands[3]."';";
return $renderedQ;
}
else
{
echo 'ERROR: Mismatch query template';
}
}
else
{
$renderedQ = 'SELECT * FROM `'.$commands[1].'` WHERE id='.$commands[2].';';
return $renderedQ;
}
}
else
{
return $query;
}
}
try
{
$query = $handler->query(render($q));
if($query){
if($all==true){
print_r(json_encode($query->fetchAll(PDO::FETCH_ASSOC)));
}
else
{
print_r(json_encode($query->fetch(PDO::FETCH_ASSOC)));
}
}else{
//echo 'Error';
}
}
catch (PDOException $e)
{
echo $e;
}
?>
脚本的其余部分只是执行查询,该查询是从我在angularjs中生成的工厂函数发送的。
fact.get = function(query, all){ return $http.post('https://example.com/script.php', {'query': query, 'all': all}); };
有没有办法在angularjs中设置标题?甚至是一种完全不同的方式来实现这一目标?