Angular使用jQuery向PHP文件发POST请求出现404错误如何解决?
问题根因
ng serve启动的localhost:4200是Angular专属的前端静态开发服务,仅支持返回编译后的前端静态资源(HTML、CSS、JS、图片等),没有PHP解析运行能力,也不会处理动态接口请求,所以直接请求assets目录下的PHP文件会返回404。
解决步骤
- 搭建本地PHP运行环境,可选用XAMPP、WAMP集成包,也可以直接用PHP内置服务启动,端口建议和4200区分开(比如用8000端口)。将
sendEmail.php放到PHP服务的Web根目录下,启动后先直接访问http://localhost:8000/sendEmail.php测试是否能正常返回内容。 - 修改Angular中的请求地址,不要使用相对路径,替换为PHP服务的完整请求路径:
$.post("http://localhost:8000/sendEmail.php", {test: 'test'}).done(function (res){ alert("success,返回内容:" + res); });
- 解决本地跨域问题:Angular的4200端口请求PHP的8000端口属于跨域请求,需要在PHP文件头部添加跨域允许头:
<?php header('Access-Control-Allow-Origin: http://localhost:4200'); header('Access-Control-Allow-Methods: POST'); echo $_POST['test']; ?>
- 生产环境部署建议:将前端静态资源和PHP接口部署到同一域名下,或者通过Nginx反向代理把接口请求统一转发到PHP服务,无需额外配置跨域。
- 可选优化:Angular官方不推荐使用jQuery发送请求,建议使用框架内置的
HttpClient模块,更方便做请求拦截、错误统一处理等操作。
内容的提问来源于stack exchange,提问作者Itai Elidan
相关产品推荐
相关产品推荐

