我最近创建了一个非常简单的测试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等概念上还很陌生。我在寻找尽可能多的信息,在此先感谢