You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5与PHP无法向服务器端文件发起POST请求问题排查

解决Angular向PHP发送请求时的404错误问题

你遇到的核心问题是请求路径配置错误,同时还需要处理跨域限制,我来一步步帮你排查解决:

1. 修正请求URL的核心错误

你当前的请求地址是http://localhost:4200/aff.local/test.php,这是把Angular开发服务器的端口(4200)和PHP虚拟主机的域名(aff.local)混在一起了——这两个是完全独立的服务:

  • Angular运行在本地开发服务器localhost:4200
  • PHP脚本部署在虚拟主机aff.local下

所以你需要把请求URL改成直接指向虚拟主机的地址:

this.http.post('http://aff.local/test.php', params, { headers: headerOptions })

2. 处理跨域请求限制

当你从localhost:4200向aff.local发送请求时,浏览器会触发跨域安全限制,这里提供两种常用的解决方式:

方案一:在PHP脚本中添加CORS响应头

在test.php的最顶部添加以下代码,允许Angular开发服务器的跨域请求:

<?php
header("Access-Control-Allow-Origin: http://localhost:4200");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
// 原有的数据库连接等代码...

方案二:使用Angular代理配置(更推荐)

在Angular项目根目录创建proxy.conf.json文件,内容如下:

{
  "/api": {
    "target": "http://aff.local",
    "secure": false,
    "changeOrigin": true,
    "pathRewrite": {
      "^/api": ""
    }
  }
}

接着修改angular.json里的serve配置,加入代理引用:

"serve": {
  "builder": "@angular-devkit/build-angular:dev-server",
  "options": {
    "browserTarget": "你的项目名称:build",
    "proxyConfig": "proxy.conf.json"
  },
  // 其他原有配置...
}

之后把请求URL改成相对路径:

this.http.post('/api/test.php', params, { headers: headerOptions })

最后重启Angular开发服务器即可生效。

3. 确认虚拟主机配置的正确性

虽然你提到文件存在,但还是要检查以下几点:

  • 虚拟主机aff.local是否正确绑定到了PHP脚本所在的文件夹
  • 本地hosts文件是否添加了127.0.0.1 aff.local的映射
  • 直接在浏览器访问http://aff.local/test.php是否能正常打开(测试PHP服务是否正常运行)

额外提示:加密数据的传递优化

你用crypto.AES.encrypt得到的是一个对象,直接作为参数传递可能会出现格式问题,建议先转换成字符串再发送:

let enc = crypto.AES.encrypt(user, key).toString(); // 转换为字符串格式
const params = new HttpParams().set('name', enc);

这样PHP端收到的才是可正常处理的加密字符串,后续解密操作也能顺利进行。


内容的提问来源于stack exchange,提问作者alim1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:35:51