跨域

本文介绍了三种不同的跨域问题解决方法:使用Spring Boot配置跨域、在Tomcat中通过Web.xml及自定义过滤器实现跨域、以及在IIS服务器中设置跨域响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考: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
content-type
Access-Control-Allow-Methods
GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Origin
*

其中
Access-Control-Allow-Headers表示请求消息头;
Access-Control-Allow-Methods表示请求方法;
Access-Control-Allow-Origin表示请求来源,“*”表示不限定;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值