我正在使用 Angular 16 作为前端,使用 Laravel 11 作为后端创建一个应用程序,在我的本地项目中一切运行良好,但是在托管它之后,一些路由(例如添加到购物车/上传文件)在控制台中返回 CORS 错误 XHR ,例如,当我点击“添加到购物车”时,出现意外错误,当我打开控制台时,我看到错误 CORS 出现,并且网络中没有缺少 access-control-allow-origin,尽管该项目是添加到购物车,我不明白为什么这个问题只出现在我的托管项目中以及为什么它只出现在某些路线上。
对于我的 cors.php 文件,这是我的代码:
<?php
return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
?>
有人知道问题出在哪里吗? 我的域名是这样的:
正面 =>
www.localhost:4200
/ www.frontdemo.*******.com
和背面 =>
www.localhost:8000
/ www.backdemo.*******.com
尊重本地和托管项目。 编辑: 深入研究后,这是我对每个 POST 请求得到的结果: 我的控制台截图
Access-Control-Allow-Origin:并非所有浏览器都支持 * 值。在 * 字段中,输入您向其发送请求的域名。
也可以!对于选项类型请求!你必须发送答案。
if (isset($_SERVER['HTTP_REFERER'])) {
// Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
// you want to allow, and if so:
header("Access-Control-Allow-Origin: http://localhost:4200");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, PUT, PATCH, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
die('OK!');
}