Ajax跨域02-待续

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/Andy2019/article/details/81054270
解决跨域问题
一、使用Filter方式
package vip.fkandy;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CrosFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse)response;
        //指定这个域允许跨域,如果想允许所有域,使用 “*” 号
        res.addHeader("Access-Control-Allow-Origin","http://localhost:8081");
        //指定允许跨域的方法,如果想允许所有方法,使用 “*” 号
        res.addHeader("Access-Control-Allow-Methods","GET");
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {

    }
}
package vip.fkandy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    //新增注册Filter代码,因为@SpringBootApplication注解包含@EnableAutoConfiguration
    @Bean
    public FilterRegistrationBean registerFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.addUrlPatterns("/*");//所有请求都添加过滤器
        bean.setFilter(new CrosFilter());

        return bean;
    }
}


可以看到Response Headers里面已经添加上了Access-Control-Allow-Origin和Access-Control-Allow-Methods

简单请求和非简单请求
1.简单请求
    方法为:GET HEAD POST
请求header里面
    无自定义头
    Content-Type为以下几种:
        text/plain
        multipart/form-data
        application/x-www-form-urlencoded
2.非简单请求
    PUT,DELETE 方法的ajax请求
    发送json格式的ajax请求
    带自定义头的ajax请求

猜你喜欢

转载自blog.csdn.net/Andy2019/article/details/81054270