Angular-PHP CORS 请求被阻止

Posted

技术标签:

【中文标题】Angular-PHP CORS 请求被阻止【英文标题】:Angular-PHP CORS request blocked 【发布时间】:2022-01-24 02:23:07 【问题描述】:

我正在尝试在填写表格时通过 php 服务从我的 Angular 项目发送一封电子邮件。

当我尝试在控制台中发送请求时 我收到以下错误“从源 'https://website' 访问 'https://website/assets/php/mail.php?con_name=user&con_email=mail&con_message=test&con_subject=Hello%20World' 的 XMLHttpRequest 已被阻止CORS 政策:请求的资源上不存在“Access-Control-Allow-Origin”标头。

正如你们中的许多人在 PHP 文件中所建议的那样,我已经不成功地包含了“header('Access-Control-Allow-Origin: *');”和“header('Access-Control-Allow-Methods: POST, GET, OPTIONS');”

角度调用是:

sendMail() 
    
    this.mailValidator()
    if(this.validate() && this.mailValidator() )
    
      this.http.get("https://website.com/assets/php/mail.php?con_name="+this.name+"&con_email="+this.email+"&con_message="+this.message+"&con_subject="+this.object).subscribe((val) => 
      
      )
      this.dialogRef.close();
    
 
   

PHP代码是

<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
echo("Test")

?>

【问题讨论】:

您使用的是哪个网络服务器,您知道如何配置它吗? 网站托管在 Aruba (aruba.it/home.aspx) 【参考方案1】:

您可以尝试添加 allow Access-Control-Allow-Headers: Origin 看看是否对您有帮助?

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

【讨论】:

我总是遇到同样的错误 你是从你的本地主机调用 api 吗? 不,我已经构建了项目并在托管服务上发布了它,目前我只是用我可以在网络上找到的每个示例更改 php 文件 您是否重新启动/硬刷新您的服务器(apache 服务器)以便进行更改。如果这不起作用,那么您可以尝试调整创建 .htaccess 并将以下行添加到它 Header set Access-Control-Allow-Origin * ,然后也请刷新您的服务器 不,我无法重新启动 Apache 服务器,因为我正在使用托管服务 (Aruba)。相反, .htaccess 文件当前不存在于 Angular 项目中。我提供它的创建并插入您发送给我的命令?如果我创建它,是否可以将它放在 angular.json 所在的同一路径中?

以上是关于Angular-PHP CORS 请求被阻止的主要内容,如果未能解决你的问题,请参考以下文章

Angular CORS 请求被阻止

android 应用程序中的 CORS 原始请求被阻止

跨域请求被阻止原因:CORS 预检通道未成功

http 请求被 Flutter Web 的 Cors 策略阻止

AJAX CORS 请求来源被阻止 - Java Web 服务

CORS预检请求被阻止.Net Core 2.2 [重复]