Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

axios方法为put时,提示网络请求错误,请求方法未允许 #3845

Closed
4 tasks done
lackoxy opened this issue May 15, 2024 · 7 comments
Closed
4 tasks done

axios方法为put时,提示网络请求错误,请求方法未允许 #3845

lackoxy opened this issue May 15, 2024 · 7 comments

Comments

@lackoxy
Copy link

lackoxy commented May 15, 2024

⚠️ 重要 ⚠️ 在进一步操作之前,请检查下列选项。如果您忽视此模板或者没有提供关键信息,您的 Issue 将直接被关闭

  • 已阅读 文档.
  • 确保您的代码已是最新或者所报告的 Bug 在最新版本中可以重现. (部分 Bug 可能已经在最近的代码中修复)
  • 已在 Issues 中搜索了相关的关键词
  • 不是 ant design vue 组件库的 Bug

描述 Bug

发送put方式接口请求时,系统提示“网络请求错误,请求方法未允许!” 控制台后台提示错误代码为405

复现 Bug

接口代码
image
请求后系统提示
image
控制台错误展示
image

系统信息

  • 操作系统:
  • Node 版本: v18.20.0
  • pnpm 版本: v9.1.0
@lackoxy
Copy link
Author

lackoxy commented May 15, 2024

defhttp.get defhttp.post defhttp.delete均可以使用

@HughCodeX
Copy link
Contributor

405状态码表示服务器无法处理你请求中指定的方法,跟你前端代码没关系

@lackoxy
Copy link
Author

lackoxy commented May 16, 2024

405状态码表示服务器无法处理你请求中指定的方法,跟你前端代码没关系

但是后端代码使用postman测试是完全可行的,是我后端代码的问题吗

@HughCodeX
Copy link
Contributor

405状态码表示服务器无法处理你请求中指定的方法,跟你前端代码没关系

但是后端代码使用postman测试是完全可行的,是我后端代码的问题吗

我也是自己写的后端代码测试,postman和项目里axios请求都是可通的,建议你排查一下后端哪里配置出问题了

@lackoxy
Copy link
Author

lackoxy commented May 16, 2024

后端我排查了一遍,个人感觉没什么问题,但是在排查前端的时候我发现一个很神奇的事情
接口方法
image
我在此处分别打印了config 与 深拷贝后的conf (Axios.ts)
image
但打印后发现原本传入的params在深拷贝后莫名奇妙变成了conf中的data,这个是什么问题导致的(前不久才刚开始学习前端所以对一些原理可能不是很了解,请见谅)
image

@HughCodeX
Copy link
Contributor

HughCodeX commented May 16, 2024

后端我排查了一遍,个人感觉没什么问题,但是在排查前端的时候我发现一个很神奇的事情 接口方法 image 我在此处分别打印了config 与 深拷贝后的conf (Axios.ts) image 但打印后发现原本传入的params在深拷贝后莫名奇妙变成了conf中的data,这个是什么问题导致的(前不久才刚开始学习前端所以对一些原理可能不是很了解,请见谅) image

因为你用console.log打印对象的时候,浏览器是获取这个对象初始值的快照,你可以看到对象展开前两个值是一样的,这说明他们初始值一样。但是当你去展开这个对象的时候,代码已经执行完毕了,重新获取到的是修改之后的值。如果你想要看到conf准确的是初始值,你可以这样打印

    console.log('config :>> ', JSON.stringify(config));
    console.log('conf :>> ', JSON.stringify(conf));

@lackoxy
Copy link
Author

lackoxy commented May 16, 2024

后端我排查了一遍,个人感觉没什么问题,但是在排查前端的时候我发现一个很神奇的事情 接口方法 image 我在此处分别打印了config 与 深拷贝后的conf (Axios.ts) image 但打印后发现原本传入的params在深拷贝后莫名奇妙变成了conf中的data,这个是什么问题导致的(前不久才刚开始学习前端所以对一些原理可能不是很了解,请见谅) image

因为你用console.log打印对象的时候,浏览器是获取这个对象初始值的快照,你可以看到对象展开前两个值是一样的,这说明他们初始值一样。但是当你去展开这个对象的时候,代码已经执行完毕了,重新获取到的是修改之后的值。如果你想要看到conf准确的是初始值,你可以这样打印

    console.log('config :>> ', JSON.stringify(config));
    console.log('conf :>> ', JSON.stringify(conf));

谢谢你的解答,至于为什么params变成了data,我在beforeRequestHook(axios/index.ts)这个函数下找到了答案
image
至于前面的405问题,我发现确实原因在我,我前端接口url写错了,还是再次谢谢你耐心解答我的问题

@lackoxy lackoxy closed this as completed May 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants