axios发送post请求,使用axios.create().post可以成功,使用axios.post报错显示跨域
因业务需求,后台需要调用.net的接口,然后我使用axios发起post请求,但是显示跨域。具体情况如下
1 使用axios.post()显示跨域
import axios from 'axios'
import Qs from 'qs'
// 获取oa业务类型
export function get_service_list(params) {
return axios.post(APIURL.API_OA + 'getYewu', Qs.stringify(params))
}
调用:
get_service_list({ type: "getYewu", tel: "15380887947" })
.then(res => {....})
情况如下
控制台是这样的,跨域报错
但是如果我使用axios.create().post就可以获取数据
// 获取oa业务类型
export function get_service_list(params) {
return axios.create().post(APIURL.API_OA + 'getYewu', Qs.stringify(params))
}
network是这样的
结果成功获取到数据
但是这个接口还有一种办法可以调的通就是使用post 调用
但是需要使用 query string parameters的方式传参
// 获取oa业务类型
export function get_service_list(params) {
return axios.create().post(APIURL.API_OA + 'getYewu?'+ Qs.stringify(params))
}
然后可以拿到数据,但是前提是必须在create()的情况下
包括使用get请求在create()的情况下也可以调的通
总结就是,在使用axios.create()的情况下get和post都可获取数据
post有分两种情况一种是在url下拼接参数query string parameters,还有一种是常规传参
post(url, Qs.stringify(params))
然而不用axios.create(),使用axios.get,axios.post全!都!不!行!
我好想弄明白这都是什么情况, 人都要弄晕了~~~
补充: 成功的情况下的响应头是这样 (post请求)
以及这样(get请求)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看下 response headers 里的内容。
看起来服务器端已经配置了跨域头,但是不知道为何没生效。理论上说
axios.create()
会返回一个 axios 实例,这样做的目的是区分不同的配置,并不会改变请求本身。建议你保证浏览器干净的前提下(清理掉所有缓存),分别发出请求(
axios.get
vsaxios.create().get
),好好对比一下 request headers。毕竟不管代码逻辑怎么写,终归要发出 http 请求。