-1

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

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

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

前面的断开按钮(角度)

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

注销.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';    
}

初始化文件

<?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 错误,提示“同源策略不允许在...处读取远程资源(原因:CORS 标头 'Access-Control-Allow-Origin' 缺失)”

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

我在那里想念什么?

4

1 回答 1

0

我缺少的是:

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

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

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

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

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

于 2019-07-31T12:32:41.333 回答