Php 当响应代码为';时,飞行前请求失败CORS(没有HTTP请求OK状态);硬编码
我使用的是一个简单的PHP后端和角度前端。我和CORS有麻烦。我已经设置了正确的头球,仍然面对科尔斯的阻挡。我尝试了很多东西,并注意到以下几点 因为我期望有很多PHP文件,所以我希望在响应中保持一致。因此,我创建了一个名为httpHelper.PHP的PHP文件,并添加了一个函数,用于设置标题、响应状态代码并返回响应 下面是httpHelper.phpPhp 当响应代码为';时,飞行前请求失败CORS(没有HTTP请求OK状态);硬编码,php,cors,backend,Php,Cors,Backend,我使用的是一个简单的PHP后端和角度前端。我和CORS有麻烦。我已经设置了正确的头球,仍然面对科尔斯的阻挡。我尝试了很多东西,并注意到以下几点 因为我期望有很多PHP文件,所以我希望在响应中保持一致。因此,我创建了一个名为httpHelper.PHP的PHP文件,并添加了一个函数,用于设置标题、响应状态代码并返回响应 下面是httpHelper.php <?php function json_response($code = 200, $message = null) { hea
<?php
function json_response($code = 200, $message = null)
{
header_remove();
http_response_code($code);
header('Content-Type: application/json');
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");
return "{ \"detail\":". $message."}";
}
我面对的是CORS块
访问位于的XMLHttpRequest
'http://localhost:8080/checkFeedbackStatus.php"从源头上说,
'http://localhost:4200'已被CORS策略阻止:响应
飞行前请求未通过访问控制检查:它没有
HTTP ok状态
但是当同一个httpHelper.php使用恒定状态代码编码时,我没有问题
<?php
function json_response($code = 200, $message = null)
{
header_remove();
http_response_code(200);
header('Content-Type: application/json');
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");
return "{ \"detail\":". $message."}";
}
除非您使用实际域,否则它将不起作用,因为它当前是针对CORS头的。
也许有几种方法可以让它发挥作用,但我只知道其中的两种
在Xampp中使用代理
使用Ngrok,这将为您提供公共域,以便在本地主机上进行环回
如果您使用的是xampp,则可以编辑httpd.conf并在文件末尾添加代理,然后重新启动apache服务
ProxyPass /checkStatus http://localhost:8080/checkFeedbackStatus.php
ProxyPassReverse /checkStatus http://localhost:8080/checkFeedbackStatus.php
对于Ngrok,您可以阅读文档
设置ngrok后,您可以使用任何端口将ngrok用作公共域
ngrok http 8080
请求类型不是POST,而是OPTIONS,因为错误告诉您这是飞行前请求。它还告诉你ti“没有ok状态”,所以首先要做的是找出它有什么样的状态。解决禁止错误的方式与解决内部服务器错误的方式大不相同。查看浏览器开发工具的“网络”选项卡。@Quentin是的,这就是问题所在。我正在发送405响应代码,用于除post之外的所有请求方法。其中包括选项。我不知道飞行前是选择型的。谢谢。
ngrok http 8080