axios post跨域请求报405,get正常

首先 跨域配置如下:

找到index.js中的dev属性。添加如下代码:

proxyTable: {
      '/api': {
        target: 'http://localhost:8083',//设置你调用的接口域名和端口号 别忘了加http
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
        }
      }
    }     

axios post 请求:

import axios from 'axios';

export const getListPage = params => { 
     return axios.post(`/api/picc/local/paudit/query/projectapquery`, 
		params).then(res => res.data); };

其中,默认Content-Type为application/json;charset=UTF-8

 

之后请求,发现post请求报405错误,get请求正常,原因:

 

笔者项目web.xml中配置拦截器对默认是否允许跨域请求属性为:true

即:web.xml中配置与前端页面重复而导致了某种冲突。

 

解决:

注释掉  changeOrigin: true 属性,即:

//changeOrigin: true

 

最后,附上vue+element后台管理系统示例网址:

https://www.cnblogs.com/taylorchen/p/6083099.html

 

转载于:https://www.cnblogs.com/5588kjx/p/10384358.html

<think>好的,我现在需要解决用户提到的Axios请求请求头验证不通过的问题。首先,我得回忆一下CORS的相关知识。资源共享(CORS)是浏览器的一种安全机制,限制不同源的资源交互。当Axios发起请求时,如果请求头中包含自定义字段或者某些特定的头信息,浏览器会先发送一个预检请求(OPTIONS)来确认服务器是否允许这些头。 用户的问题可能出在预检请求没有通过,导致后续的请求被阻止。根据引用[1],服务端需要正确设置Access-Control-Allow-Headers来允许客户端发送的请求头。如果客户端在请求中使用了自定义的头部(比如Authorization、X-Custom-Header等),服务器必须在预检响应的Access-Control-Allow-Headers中包含这些头,否则浏览器会拒绝请求。 接下来,我需要分步骤思考解决方案。首先,确保客户端正确配置Axios,设置必要的请求头。例如,在Axios实例中指定headers,但要注意某些头可能需要服务器显式允许。然后,服务器端的CORS配置必须响应正确的头部。比如在Node.js的Express框架中,使用cors中间件时,可以通过设置allowedHeaders来包含需要的头信息。如果服务器端没有正确配置,即使客户端发送了正确的头,预检请求也会失败。 另外,检查是否有不必要的自定义头被添加,因为每个自定义头都会触发预检请求。如果可能的话,减少自定义头的使用可以简化CORS配置。同时,服务器还需要正确设置Access-Control-Allow-Methods,确保允许客户端使用的HTTP方法,比如GETPOST等。 还需要注意,缓存预检请求的结果。服务器可以通过设置Access-Control-Max-Age来减少预检请求的次数,提升性能。但测试阶段可能需要关闭缓存,以便实时查看配置更改的效果。 总结一下,解决方案需要同时调整客户端和服务器端的配置。客户端确保发送必要的头,服务器端正确响应这些头,并允许相关的方法和来源。可能需要检查具体的错误信息,比如浏览器的控制台错,来确定具体是哪个头不被允许,从而针对性地调整服务器配置。</think>### Axios请求头验证失败解决方案 #### 1. 客户端配置 在Axios请求中显式声明允许的请求头: ```javascript axios.get('https://api.example.com/data', { headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer your_token' } }) ``` #### 2. 服务端CORS配置 以Node.js/Express为例: ```javascript const cors = require('cors'); app.use(cors({ origin: 'https://yourdomain.com', // 指定允许的源 methods: ['GET', 'POST', 'PUT'], // 允许的方法 allowedHeaders: [ // 显式声明允许的请求头 'Content-Type', 'Authorization', 'X-Custom-Header' ], exposedHeaders: ['Content-Length'],// 允许客户端访问的响应头 maxAge: 86400 // 预检请求缓存时间(秒) })); ``` #### 3. 关键配置说明 1. **Access-Control-Allow-Headers** 必须包含客户端请求中使用的所有自定义头,例如: $$ \text{Access-Control-Allow-Headers: Content-Type, Authorization} $$ 2. **Access-Control-Allow-Methods** 确保包含实际使用的HTTP方法: $$ \text{Access-Control-Allow-Methods: GET, POST, OPTIONS} $$ 3. **预检请求处理** 服务端需要正确处理OPTIONS方法请求,返回200状态码和CORS头[^1]。 #### 4. 验证步骤 1. 浏览器开发者工具查看`Network`标签 2. 检查OPTIONS请求响应头是否包含正确的CORS配置 3. 确认请求头与服务端允许的头部完全匹配 #### 5. 常见错误处理 - **未声明自定义头**:将缺失的头部添加到服务端`allowedHeaders` - **大小写不一致**:HTTP头部名称对大小写敏感,需保持统一 - **缓存问题**:测试时设置`Access-Control-Max-Age: 0`禁用缓存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值