由于 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。
我有一个 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。