vue2-代理打包问题;CORS针对AJAX 请求,而不适用于资源请求

打包后请求被转发出现问题(如返回 405 Method Not Allowed),通常是由以下原因导致的:


1. 代理配置未生效

原因分析

在开发环境中,Vue CLI 的 devServer.proxy 仅在本地开发服务器(npm run serve)时生效。在生产环境(打包后)中,代理配置是无效的。请求会直接发送到打包后的服务器(localhost:8080)。

解决方案

需要在生产环境的服务器(如 Nginx 或后端服务)中配置请求转发规则。

Nginx 配置示例

假设生产环境使用 Nginx 部署前端代码,转发 /exportFile 到目标服务:

server {
  listen 8080;
  server_name localhost;

  location / {
    root /path/to/your/dist; # Vue 打包后的文件路径
    index index.html;
    try_files $uri /index.html; # 处理 SPA 的路由
  }

  # 转发 /exportFile 的请求到后端服务
  location /exportFile {
    proxy_pass http://192.168.11.111:8888; # 后端服务地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
验证
  1. 确保 Nginx 的配置已重新加载并生效:
    nginx -s reload
    
  2. 请求 http://localhost:8080/exportFile/delete?id=21&serviceName=... 应正确转发到 http://192.168.11.111:8888/exportFile/delete?id=21&serviceName=...

2. 请求方法不被后端服务支持

原因分析

405 Method Not Allowed 表明后端服务(如 http://192.168.11.111:8888)未正确支持 DELETE 方法。可能是:

  • 后端接口未配置支持 DELETE 方法。
  • 路径 /exportFile/delete 不存在或未绑定到 DELETE 方法。
  • 跨域配置(CORS)限制导致请求被拒绝。
解决方案
  1. 确认后端服务是否支持 DELETE 方法

    • 检查后端代码或使用工具(如 Postman)直接请求后端地址,测试 http://192.168.11.111:8888/exportFile/delete 是否返回正确响应。
    • 如果后端未实现 DELETE 方法,需更新后端逻辑支持该方法。
  2. 检查跨域配置(CORS)

    • 如果后端服务器开启了跨域检查,确保允许 DELETE 请求和相关的请求头。例如,Spring Boot 的配置可以这样修改:
      @Configuration
      public class CorsConfig implements WebMvcConfigurer {
             
             
          @Override
          public void addCorsMappings(CorsRegistry registry) {
             
             
              registry.addMapping("/**")
                      .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                      .allowedOrigins(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值