当前位置:   article > 正文

ruoyi若依前后端分离项目部署到服务器后,PUT DELETE请求403错误,GET POST请求正常_ruoyi 403

ruoyi 403

后端打包方式war,部署到tomcat8, PUT DELETE请求报403错误,网上有三种说法

第一种是跨域请求问题

WebMvcConfigurer中修改
  1. @Override
  2. public void addCorsMappings(CorsRegistry corsRegistry){
  3. /**
  4. * 所有请求都允许跨域,使用这种配置就不需要
  5. * 在interceptor中配置header了
  6. */
  7. corsRegistry.addMapping("/**")
  8. .allowCredentials(true)
  9. .allowedOriginPatterns("*")
  10. .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
  11. .allowedHeaders("*")
  12. .maxAge(3600);
  13. }

第二种是服务器没有放开了PUT DELETE请求,需要前端添加header

ruoyi vue 自动生成代码PUT DELETE为http不安全方法,这个怎么解决安全问题 · Issue #I43AX6 · 若依/RuoYi-Vue - Gitee.com

用域名访问接口, get和post请求均正常,而put和delete请求均无法正常使用_相约黄昏后007的博客-CSDN博客

将前端代码中的

method: 'put' 替换为
method: 'post',
myType: 'put'
替换 method: 'delete' 为
method: 'post',
myType: 'delete'

并更改 /src/utils/request.js 拦截请求,添加header

  1. // request拦截器
  2. service.interceptors.request.use(config => {
  3. .........
  4. //为 method 原来为 put 和 delete 的请求,添加http头信息
  5. if (config.myType === 'delete') {
  6. config.headers['X-HTTP-Method-Override'] = 'DELETE'
  7. }
  8. if (config.myType === 'put') {
  9. config.headers['X-HTTP-Method-Override'] = 'PUT'
  10. }

服务器根据Header:X-HTTP-Method-Override,转换请求method
或在nginx层修改和转发,服务端不需要做任何处理即可,参考配置

  1. #在nginx的server中添加
  2. set $method $request_method;
  3. if ($http_X_HTTP_Method_Override ~* 'DELETE') {
  4. set $method DELETE;
  5. }
  6. if ($http_X_HTTP_Method_Override ~* 'PUT') {
  7. set $method PUT;
  8. }
  9. proxy_method $method;
  10. location / {
  11. ......

第三种是tomcat 8以上不支持PUT DELETE,rest风格的api更适合将打包方式改成 jar,直接运行,目前看来第三种最有效。pom.xml修改打包方式为jar 终端运行命令:
nohup java -jar your_project.jar > your_project.log 2>&1 &

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/241782
推荐阅读
  

闽ICP备14008679号