被调用方解决-filter解决方案

被调用方解决-filter解决方案


1、后台程序先执行还是浏览器先判断?

返回的状态码:200表示执行成功    
说明请求是先执行,浏览器后判断

2、浏览器如何判断?

如果请求跨域,请求头里就会多一个Origin字段,当服务端返回信息的时候,会去判断响应头里是否有对应的字段,如果没有,即出现跨域请求问题,如果有,即允许跨域。


3、后台Filter代码实现

(1)编写CrossFilter过滤器

CrossFilter代码

package com.ajax.server.filter;


import javax.servlet.*;

importjavax.servlet.http.HttpServletResponse;

import java.io.IOException;


public class CrossFilter implements Filter{


   @Override

   public void init(FilterConfig filterConfig) throws ServletException {


    }


   @Override

   public void doFilter(ServletRequest servletRequest, ServletResponseservletResponse, FilterChain filterChain) throws IOException, ServletException{

       HttpServletResponse res = (HttpServletResponse) servletResponse;

        res.addHeader("Access-Control-Allow-Origin","http://localhost:8082");

       res.addHeader("Access-Control-Allow-Methods","GET");


       filterChain.doFilter(servletRequest, servletResponse);

    }


   @Override

   public void destroy() {


    }

}

(2)把过滤器注入到spring container中

AjaxserverApplication代码

package com.ajax.server;


import com.ajax.server.filter.CrossFilter;

importorg.springframework.boot.SpringApplication;

importorg.springframework.boot.autoconfigure.SpringBootApplication;

importorg.springframework.boot.web.servlet.FilterRegistrationBean;

importorg.springframework.context.annotation.Bean;


@SpringBootApplication

public class AjaxserverApplication {


       publicstatic void main(String[] args) {

              SpringApplication.run(AjaxserverApplication.class,args);

       }


       @Bean

       publicFilterRegistrationBean filterRegistrationBean() {

              FilterRegistrationBeanfilterRegistrationBean = new FilterRegistrationBean();

              filterRegistrationBean.addUrlPatterns("/*");

              filterRegistrationBean.setFilter(newCrossFilter());

              returnfilterRegistrationBean;

       }

}

4、测试验证

验证通过,普通请求解决了跨域问题
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,447评论 19 139
  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 12,080评论 3 56
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,711评论 1 92
  • 监听器(listener) 监听器简介 :监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个...
    奋斗的老王阅读 7,330评论 0 53
  • 最近经历外婆摔跤的事情, 让我看到自己对妈妈的评判, 还有一个越位和界限的问题。 同时, 还有对生命的理解, 这样...
    carol晓霞阅读 1,248评论 0 0