angular - CORS 错误并非总是如此
问题描述
我有一个角度应用程序(离子),当我想向外部 api 发出简单的发布请求时没问题。仅当我使用 vpn 或与主机位于不同的国家/地区时,我才会收到错误消息:已被 CORS 策略阻止:没有“访问控制允许来源”。
这是简单的角度脚本:
this.http.post<any>('https://digital-web-agency.com/api.php', { title: 'Angular POST Request Example' }).subscribe({
next: data => {
console.log(JSON.stringify(data));
// this.postId = data.id;
},
error: error => {
// this.errorMessage = error.message;
console.error('There was an error!', error);
}
这是简单的 php 脚本:
<?php
header("Access-Control-Allow-Origin: http://localhost:8100");
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
// should do a check here to match $_SERVER['HTTP_ORIGIN'] to a
// whitelist of safe domains
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
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, DELETE, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
echo json_encode('true');
?>
解决方案
推荐阅读
- python - Merging CSV entries by date and counting the entries per date
- android - 在 kotlin 中线程的正确方法
- android - 查看 RemoteViews / AppWidgets 使用的布局中是否存在 id
- python - 如何在 Python 中表示参数化类型?
- css - 如何从行中删除行?
- flutter - 获取数据时出现 RangeError(无效索引)
- python-3.x - 将 IntVar 转换为 int 的 Tkinter 问题
- ms-access - 在 MS Access 中显示未排序记录的表单导航
- flutter - 如何在无状态中调用 statefulwidget 的功能?
- hbase - HBase FuzzyRowFilter 忽略扫描开始/停止行