Vue爬坑--解决axios跨域访问SessionID变化或无效,nginx反向代理

// axios默认配置
axios.defaults.timeout = 10000 //  超时时间
axios.defaults.baseURL = 'http://172.18.2.29' //  用于发布,发布项目时这里改成nginx反向代理的地址
axios.fileUploadUrl = 'http://172.18.2.25:8080/yawei-web-app-cms' // 允许服务器获取cookie
axios.defaults.withCredentials = true // 允许服务器获取cookie
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'

Vue.config.js

devServer: {
  /**
   * 这一块是devServer的配置,可以参考https://webpack.js.org/configuration/dev-server/
   * (可选,根据自己情况来设置)
   */
  open: false, // 浏览器自动打开页面
  host: 'localhost', // 本地服务器访问的路径
  port: 8001, // 本地服务器访问的端口

  /**
   * vue-cli3跨域开发用的全配置!
   */
  proxy: {
    /**
     * 代理配置
     */
    '/cmsapi': {
      // 你要跨域的域名(包含host、端口号,切记:一定要带上http头);
      // 同一个域名只能设置一次跨域,否则重复报错!
      target: 'http://172.18.2.25:8080',
      ws: true,
      pathRewrite: {
        '^/cmsapi': '/yawei-web-app-cms/'
      },
      cookiePathRewrite: {
        '/yawei-web-app-cms/': '/'
      },
      changeOrigin: true // 是否跨域,设置为true;(必须)
    },

nginx 配置

location /cmsapi/ {

         proxy_cookie_path /yawei-web-app-cms /cmsapi;

         proxy_pass http://172.18.2.25:8080/yawei-web-app-cms/;
        
        }

JAVA 后台增加过滤器 主要用于处理options预检验请求

public class ProcessInterceptor implements HandlerInterceptor {  
      
      
    @Override  
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {  
        // 获取客户请求头 作为允许的头 即允许所有请求
        String orign = httpServletRequest.getHeader("Origin");
        httpServletResponse.setHeader("Access-Control-Allow-Origin", orign);  
  
        httpServletResponse.setHeader("Access-Control-Allow-Headers", "USER_TOKEN,Content-Type,Content-Length, Authorization, Accept,X-Requested-With");  
  
        httpServletResponse.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  
        httpServletResponse.setHeader("Access-Control-Allow-Credentials","true");  
        
        httpServletResponse.setHeader("X-Powered-By","Jetty");  
  
        String method= httpServletRequest.getMethod();  
  
        if (method.equals("OPTIONS")){  
            httpServletResponse.setStatus(200);  
            return false;  
        }  
  
        System.out.println(method);  
  
        return true;  
    }  
  
    @Override  
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {  
  
    }  
  
    @Override  
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {  
  
    }  
}  

spring-mvc 配置文件中增加

	<mvc:interceptors>
	  <bean class="yawei.web.app.cms.interceptor.ProcessInterceptor"></bean>  
	</mvc:interceptors>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值