溫馨提示×

cors在java應用中如何配置

小樊
157
2024-09-05 15:11:06
欄目: 編程語言

CORS(跨域資源共享)是一種安全機制,用于控制Web瀏覽器允許從不同源加載的資源。在Java應用中,我們可以使用過濾器(Filter)或者Spring框架的配置來實現CORS。

以下是兩種常見的Java Web框架中配置CORS的方法:

  1. 使用Java Servlet Filter配置CORS:

創建一個名為CORSFilter.java的過濾器類:

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;

@WebFilter(asyncSupported = true, urlPatterns = { "/*" })
public class CORSFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
        httpResponse.setHeader("Access-Control-Max-Age", "3600");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

這個過濾器將CORS相關的HTTP頭添加到每個HTTP響應中。

  1. 使用Spring框架配置CORS:

在Spring Boot應用中,你可以通過創建一個全局CORS配置類來實現CORS。創建一個名為GlobalCorsConfig.java的配置類:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GlobalCorsConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*")
                        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                        .allowedHeaders("*")
                        .allowCredentials(true)
                        .maxAge(3600);
            }
        };
    }
}

這個配置類將CORS相關的HTTP頭添加到每個HTTP響應中。

以上就是在Java應用中配置CORS的兩種方法。根據你的項目需求和使用的框架,你可以選擇其中一種方法來實現CORS。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女