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

VueJS本地调用API报错:8080端口访问80端口接口该如何解决

解决VueJS跨域请求PHP API的问题

这个问题我太熟了——你遇到的是**跨域资源共享(CORS)**问题,因为你的Vue应用跑在8080端口,而PHP API在80端口,浏览器的同源策略会阻止这种跨端口的请求,所以才会返回status 0的错误。下面给你几个靠谱的解决办法:

办法一:在PHP后端添加CORS响应头

这是最直接的后端解决方案,不管是开发还是生产环境都能用。在你的PHP API脚本的最开头(任何输出之前)添加以下代码:

// 允许指定域名的跨域请求(这里是你的Vue应用地址)
header("Access-Control-Allow-Origin: http://localhost:8080");
// 允许的请求方法
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
// 允许的请求头
header("Access-Control-Allow-Headers: Content-Type");

如果开发阶段想临时允许所有域名访问,可以把Access-Control-Allow-Origin的值改成*,但生产环境千万不要这么做,会有安全风险。

办法二:用Vue CLI的代理配置(推荐开发环境)

开发环境下,修改后端代码有时候比较麻烦,用Vue的代理功能更方便。在你的Vue项目根目录创建(或修改)vue.config.js文件,添加代理配置:

module.exports = {
  devServer: {
    proxy: {
      // 匹配所有以/gaming/api开头的请求
      '/gaming/api': {
        // 代理目标地址(你的PHP服务地址)
        target: 'http://localhost:80',
        // 开启跨域模拟
        changeOrigin: true
      }
    }
  }
}

然后修改你Vue代码里的请求地址,把完整URL改成相对路径:

mounted: function(){
  this.$http.get('/gaming/api/game/1').then((data)=>{
    console.log(data.body);
  });
}

这样Vue的开发服务器会把请求代理到80端口,浏览器就不会认为是跨域了。

办法三:确保Apache的headers模块开启

如果用了办法一但还是没效果,可能是XAMPP的Apache没开启mod_headers模块。打开XAMPP的Apache配置文件httpd.conf,找到下面这行,去掉前面的#注释:

LoadModule headers_module modules/mod_headers.so

保存后重启Apache服务,再测试请求应该就正常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:49