Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php api rest即使使用标头(';访问控制允许源代码:&';)也不接受cors请求;_Php_Angular_Cors - Fatal编程技术网

php api rest即使使用标头(';访问控制允许源代码:&';)也不接受cors请求;

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 我可视化了一些教程,并将以下标

我正在用php创建angular应用程序6和api rest。 当我的angular应用程序尝试执行请求时,请输入以下url:
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能够将数据加载到网络中,但应用程序尚未加载