前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前后端分离项目问题总结

前后端分离项目问题总结

作者头像
chao超的搬运文章
发布2023-10-15 19:29:13
1990
发布2023-10-15 19:29:13
举报
文章被收录于专栏:java,hbasejava,hbase

这里记录一下,我在写一个自己设计的项目时遇到的几个问题!!!

1、Session获取为null

需求:session保存验证码,在session中验证验证码是否正确

解释:

前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话。

 解决:

前端VueCli中main.js设置:

axios.defaults.withCredentials = true;    //这行代码表示在发送 Axios 请求时,将会自动发送和接收本站设置的跨域凭证(即发送和接收包含身份凭证的请求)。

 后端配置拦截器,拦截所有请求:

代码语言:javascript
复制
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
        response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "*");//设置允许的HTTP请求方法。通配符"*"表示允许所有的请求方法
        response.setHeader("Access-Control-Allow-Credentials", "true");//是否支持cookie跨域
        response.setHeader("Access-Control-Allow-Headers", "Authorization,Origin, X-Requested-With, Content-Type, Accept,Access-Token");//设置允许的HTTP请求头。通过设置该响应头,指定允许前端发送的请求头信息
        return true;
    }

2、上传文件过大

需求:上传一张图片和一个执行文件

解释:

利用MultipartFile对象上传文件时,SpringBoot默认会有一个大小限制。

解决: 

在application.yml文件中添加配置:

            spring:                 servlet:                   multipart:                     max-file-size: -1                #指定允许上传文件的最大大小,-1表示没有限制                         max-request-size: -1    #用于设置允许的最大请求体大小,也就是整个HTTP请求的大小限制。它包括请求报头、请求行、请求体等所有的数据 

3、前端跨域问题

在npm run server执行vue脚手架项目时,所有请求都是好的。但是webpack打包后,在运行项目去请求,所有请求都失效了,在控制台报错  '跨域问题'  。

解决:

在vue.config.js文件中添加代理配置:

代码语言:javascript
复制
module.exports = {
    devServer: {
        port: 8088,
        proxy:{                //代理配置
            '/app':{           //指匹配以/app开头的路径
                target:'http://localhost:8888',    //代理的目标地址
                changeOrigin:true,    //这里设置true表示在发送请求时,将请求头中的Host字段更改为目标主机的地址
                pathRewrite:{        //重写路径
                    '/app':'/'       //这里将以 /app 开头的路径重写为以 / 开头的路径
                }
            }
        }
    },
    publicPath:'./',
    outputDir:'dist',
    assetsDir:'assets'
}

在main.js中设置axios的基础url部分:

axios.defaults.baseURL = '/app'; 

这里注意,这里代理只支持本地开发时使用。在将整个项目放到服务器后,需要在web服务器配置后端服务的代理。否则前端页面的请求不可用!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Session获取为null
  • 2、上传文件过大
  • 3、前端跨域问题
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档