由于 CORS "Access-Control-Allow-Origin" 不存在,phpCAS 注销失败

phpCAS logout failed because of CORS "Access-Control-Allow-Origin" not present

我有一个 Angular 4 的前端,为了连接,我正在使用 phpCAS,我将它放在与前端相同的文件夹 /backend 中。

在我的前面,Angular 中的 index.html 所在的位置,有一个 index.php 文件首先启动,并且在调用我的身份验证后包含 index.html。

然后身份验证按预期工作,但每当我想断开连接时,我都会用以下内容调用我的后端:

断开按钮在前面(angular)

logoutCerbere() {
    return this._http.get("./backend/logout.php").subscribe(data => {
       console.log("Disconnected")
   })
}

logout.php

require_once 'init.inc.php';
if (phpCAS::isAuthenticated()) {
    phpCAS::logout();
    session_destroy();
    session_unset();
} else {
    header('HTTP/1.0 401 Unauthorized');
    echo 'HTTP/1.0 401 Unauthorized';    
}

init.inc.php

<?php
require_once 'CAS-1.3.6/CAS.php';
$CAS_HOST = '*******/****';
$CAS_CONTEXT = '/cas/public/';

//$cas_server_ca_cert_path = '/path/to/cachain.pem';
//phpCAS::setCasServerCACert($cas_server_ca_cert_path);

phpCAS::client(CAS_VERSION_2_0, $CAS_HOST, 443, $CAS_CONTEXT);
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();
?>

我收到一个 CORS 错误,指出 "Same Origin Policy disallows reading the remote ressource at ... (Reason: CORS header 'Access-Control-Allow-Origin' missing)"

我不明白的是我是从我的服务器调用它的(因为我要求获取我的 php 文件并且我的连接以完全相同的方式工作)所以应该'成为 CORS 请求。

我错过了什么?

我缺少的是:

  • include 之前确实是 PHP 所以没有 CORS,但是一旦我们进入 include,它就是 html/front domain

  • getUser 只是从本地存储中检索数据,因此不涉及 CORS

  • 当我想发出断开连接请求时,请求是在前端发出的,这意味着 CORS 会介入。

我通过简单地放置 <a href="backend/logout.php">Disconnect</a>.

解决了这个问题

这意味着 PHP 是 运行 服务器端,不会涉及 CORS。