axios发送post请求,使用axios.create().post可以成功,使用axios.post报错显示跨域

发布于 2022-09-12 01:38:48 字数 1847 浏览 8 评论 0

因业务需求,后台需要调用.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 => {....})

情况如下
image.png

控制台是这样的,跨域报错
image.png

但是如果我使用axios.create().post就可以获取数据

// 获取oa业务类型
export function get_service_list(params) {
  return axios.create().post(APIURL.API_OA + 'getYewu', Qs.stringify(params))
}

network是这样的
image.png
结果成功获取到数据
image.png

但是这个接口还有一种办法可以调的通就是使用post 调用
但是需要使用 query string parameters的方式传参

// 获取oa业务类型
export function get_service_list(params) {

  return axios.create().post(APIURL.API_OA + 'getYewu?'+ Qs.stringify(params))
}

然后可以拿到数据,但是前提是必须在create()的情况下
image.png
包括使用get请求在create()的情况下也可以调的通
image.png

总结就是,在使用axios.create()的情况下get和post都可获取数据

post有分两种情况一种是在url下拼接参数query string parameters,还有一种是常规传参

post(url, Qs.stringify(params))

然而不用axios.create(),使用axios.get,axios.post全!都!不!行!

我好想弄明白这都是什么情况, 人都要弄晕了~~~

补充: 成功的情况下的响应头是这样 (post请求)

image.png

以及这样(get请求)
image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2022-09-19 01:38:48

看下 response headers 里的内容。

看起来服务器端已经配置了跨域头,但是不知道为何没生效。理论上说 axios.create() 会返回一个 axios 实例,这样做的目的是区分不同的配置,并不会改变请求本身。

建议你保证浏览器干净的前提下(清理掉所有缓存),分别发出请求(axios.get vs axios.create().get),好好对比一下 request headers。毕竟不管代码逻辑怎么写,终归要发出 http 请求。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文