php api rest即使使用标头(';访问控制允许源代码:&';)也不接受cors请求;
我正在用php创建angular应用程序6和api rest。 当我的angular应用程序尝试执行请求时,请输入以下url:php api rest即使使用标头(';访问控制允许源代码:&';)也不接受cors请求;,php,angular,cors,Php,Angular,Cors,我正在用php创建angular应用程序6和api rest。 当我的angular应用程序尝试执行请求时,请输入以下url:http://localhost/bdevApi/api/index/categoryexame?page=1 已加载以下错误: 未能加载对飞行前请求的响应,请求未通过访问权限 控制检查:上不存在“访问控制允许原点”标题 请求的资源。来源“http://localhost:4200因此,”是 不允许访问 角度在端口4200,我的api在80 我可视化了一些教程,并将以下标
http://localhost/bdevApi/api/index/categoryexame?page=1
已加载以下错误:
未能加载对飞行前请求的响应,请求未通过访问权限
控制检查:上不存在“访问控制允许原点”标题
请求的资源。来源“http://localhost:4200因此,
”是
不允许访问
角度在端口4200,我的api在80
我可视化了一些教程,并将以下标题添加到我的api中
api/index.php
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
include("config/config.php");
include("import/Interpreter.php");
include("import/SendJson.php");
include("database/Connection.php");
include("import/AuthToken.php");
$db = Connection::getInstance();
if( $db->getStateConnection() )
{
$arrayHeader = getallheaders();
$token = isset($arrayHeader["token"]) ? $arrayHeader["token"] : "";
// Recupera dados via Json
$strJson = file_get_contents('php://input'); //echo $strJson;
$jsonObject = json_decode($strJson); //var_dump($strJson);
$Interpreter = new Interpreter(
"http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]",
$_SERVER['REQUEST_METHOD'],
$jsonObject
);
if(AuthToken::validateToken($token))
$Interpreter->initializes(true);
else
{
if($token == "")
$Interpreter->initializes(false);
else
{
$S = new SendJson();
$S->Send("200", "1", "Token não autenticado", null);
}
}
$db->closeConnection();
}
?>
如何让我的应用程序接受这些标题而不显示此错误
[编辑]
[]
新错误
加载失败
:没有
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许使用源“”
进入
这是因为跨原产地政策。您可以浏览本文档以了解有关CORS的详细信息: 您可以尝试以下代码:
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
这是因为跨原产地政策。您可以浏览本文档以了解有关CORS的详细信息: 您可以尝试以下代码:
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
您是否签入选项请求的响应正文和标题?如果是选项,您的服务器应立即返回200。也许它会遍历代码的其余部分并返回其他一些我不太理解的内容,我只是浏览了一下网络标题,这里是请求方法:选项,状态代码:200 OK这是一个很好的开始。通常还有一个响应主体选项卡。选项请求没有任何内容?在我的回复标题中显示状态为200,但我找不到任何与选项相关的内容是的,如果可以的话。显示请求和响应标题您是否签入选项请求的响应正文和标题?如果是选项,您的服务器应立即返回200。也许它会遍历代码的其余部分并返回其他一些我不太理解的内容,我只是浏览了一下网络标题,这里是请求方法:选项,状态代码:200 OK这是一个很好的开始。通常还有一个响应主体选项卡。选项请求没有任何内容?在我的回复标题中显示状态为200,但我找不到任何与选项相关的内容是的,如果可以的话。显示请求和响应标头I能够将数据加载到网络中,但应用程序尚未加载。I能够将数据加载到网络中,但应用程序尚未加载