参考:https://www.cnblogs.com/jonath/p/5995118.html
spring boot 解决跨域问题:
package
cn.itcast.start
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.filter.CorsFilter
;
@SpringBootApplication
public class
MySpringBootApplication {
public static void
main
(String[] args) {
//入口运行类
SpringApplication.
run
(MySpringBootApplication.
class,
args)
;
}
private
CorsConfiguration
buildConfig
() {
CorsConfiguration corsConfiguration =
new
CorsConfiguration()
;
corsConfiguration.addAllowedOrigin(
"*"
)
;
corsConfiguration.addAllowedHeader(
"*"
)
;
corsConfiguration.addAllowedMethod(
"*"
)
;
return
corsConfiguration
;
}
/**
* 跨域过滤器
*
@return
*/
@Bean
public
CorsFilter
corsFilter
() {
UrlBasedCorsConfigurationSource source =
new
UrlBasedCorsConfigurationSource()
;
source.registerCorsConfiguration(
"/**"
,
buildConfig())
;
// 4
return new
CorsFilter(source)
;
}
}
tomcat解决跨域问题:
1.在web.xml文件中加入以下内容:
<
filter
>
<
filter-name
>
CorsFilter
</
filter-name
>
<
filter-class
>
cn.iqoo.api.filter.CorsFilter
</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>
CorsFilter
</
filter-name
>
<
url-pattern
>
/*
</
url-pattern
>
</
filter-mapping
>
2.
package
cn.iqoo.api.filter;
import
javax.servlet.*;
import
javax.servlet.http.HttpServletResponse;
import
java.io.IOException;
/**
* TODO:
*
* @author: jonath
* @date: 17-3-2
*/
public
class
CorsFilter
implements
Filter {
@Override
public
void
init(FilterConfig filterConfig)
throws
ServletException {
}
@Override
public
void
doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws
IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
httpResponse.addHeader(
"Access-Control-Allow-Origin"
,
"*"
);
httpResponse.setHeader(
"Access-Control-Allow-Headers"
,
"Origin, X-Requested-With, Content-Type, Accept"
);
httpResponse.setHeader(
"Access-Control-Allow-Methods"
,
"GET, PUT, DELETE, POST"
);
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public
void
destroy() {
}
}
iis中跨域问题:
在IIS上选择HTTP响应标头,选择添加自定义响应标头,通常我们会添加三个HTTP响应标头:
其中
Access-Control-Allow-Headers表示请求消息头;
Access-Control-Allow-Methods表示请求方法;
Access-Control-Allow-Origin表示请求来源,“*”表示不限定;