PHP新手发送POST请求返回405 Not Allowed错误如何解决
405错误解决方案
405 Not Allowed错误的核心是请求方法未被服务端允许,针对你的场景按以下优先级排查解决:
- 优先处理跨域预检请求:跨域POST请求发送前,浏览器会自动发起OPTIONS类型的预检请求验证跨域规则,你的现有代码没有处理该类请求,是触发405的最常见原因。在代码开头新增OPTIONS请求判断,匹配到直接返回200状态码即可。
- 检查Web服务器配置:确认你的Nginx/Apache/本地开发环境的站点规则,没有限制PHP文件的POST请求权限。部分默认配置会对静态资源目录只开放GET/HEAD请求,如果你将PHP文件放在静态资源目录没有单独配置PHP解析规则,也会触发405。
- 补充代码健壮性逻辑:新增POST请求判断和参数存在性判断,避免非POST请求时出现PHP报错。
修正后的完整代码如下:
<?php header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Credentials: true"); header("Access-Control-Allow-Methods: GET,HEAD,OPTIONS,POST,PUT"); header("Access-Control-Allow-Headers: Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); // 处理OPTIONS预检请求 if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { http_response_code(200); exit; } $result = "info: "; // 先判断参数存在再读取,避免报错 if( isset($_POST['email'])) { $result .= $_POST['email']; } echo $result; ?>
内容的提问来源于stack exchange,提问作者Doticni
相关产品推荐
相关产品推荐

