首页 > 解决方案 > 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');

?>

标签: angular

解决方案


推荐阅读