在ASP.net剃须刀页面上使用PHP API

时间:2019-04-12 17:46:17

标签: php api cors

我最近创建了一个非常简单的测试PHP api,出于测试目的,我试图在ASP.net core 2.2 index.cshtml页面上使用此简单API,但我一直在出错。

我正在将PHP7与MySQL数据库一起使用,我尝试将cors添加到asp.net应用程序中没有任何作用,我还尝试过使用ajax使用api。

-PHP API代码-

API / MENSAJES / READ.PHP

//Headers
header('Acces-Control-Allow-Origin: *');
header('Content-Type: application/json');

include_once '../../config/Database.php';
include_once '../../models/Mensaje.php';

//Instanciar base de datos
$database = new Database();
$db = $database->connect();

//Instanciar Objeto Mensaje
$msj = new Mensaje($db);

//Query mensajes
$result = $msj->read();

//Obtiene cantidad de Rows
$num = $result->rowCount();

if ($num > 0) 
{
    //array
    $msg_arr = array();
    $msg_arr['data'] = array();

    while($row = $result->fetch(PDO::FETCH_ASSOC)) 
    {
        extract($row);         

        $msg_item = array(
            'id' => $id,
            'mensaje' => html_entity_decode($mensaje)
        );
        array_push($msg_arr['data'], $msg_item);
    }

    echo json_encode($msg_arr);
} 
else 
{
    echo json_encode(
        array('message' => 'No Mensajes')
    );
}

CONFIG / DATABASE.PHP

<?php
    class Database 
    {
        //== Parametros
        private $host = 'localhost';
        private $dbname = 'api_test';
        private $username = 'root';
        private $password = '';
        private $conn;
        //== DB conection
        public function connect() 
        {
            $this->conn = null;
            try 
            {
                $this->conn = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->dbname, 
                $this->username, $this->password);       
                $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);             
            } 
            catch(PDOException $e) 
            {
                echo 'Connection Error: ' . $e->getMessage();
            }
            return $this->conn;
        }
    }

MODELS / MENSAJE.PHP

<?php 
    class Mensaje 
    {
        //== DB Handling
        private $conn;
        private $table = 'mensajes';

        //== Propiedades de Mensaje
        public $id;
        public $mensaje;

        //== Constructor
        public function __construct($db) {
            $this->conn = $db;
        }

        //== Read function
        public function read() 
        {
            //Query
            $query = 'SELECT id, mensaje FROM mensajes';

            //Statement
            $stmt = $this->conn->prepare($query);

            //Execute
            $stmt->execute();
            return $stmt;
        }

    }

-ASP.NET核心代码- 这是在剃须刀页面中

@section Scripts{
    <script>
        $(document).ready(function () {
            var mensaje = document.getElementById("test");

            $.getJSON('https://netdte.cl/php_rest/api/mensajes/read.php',function (data) {
                mensaje = data;
                console.log(data);
                mensaje.value = mensaje;
            });
    </script>
}

这应该返回这个

{
    "data": [
        {
            "id": "1",
            "mensaje": "Soy Eddard Stark"
        }
    ]
}

相反,它给了我这个错误

CORS策略已阻止从来源“ https://netdte.cl/php_rest/api/mensajes/read.php”访问“ https://localhost:44318”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

请记住,我在API,APIrest等概念上还很陌生。我在寻找尽可能多的信息,在此先感谢

0 个答案:

没有答案