java允许跨域设置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

SpringBoot项目允许跨域设置。

一、编写配置类

public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings( CorsRegistry registry) {
        registry.addMapping("/**")//允许请求路径
                .allowedOrigins("*")//表示允许所有网址发起跨域请求
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")//表示允许跨域请求的方法
                .maxAge(3600)//表示在3600秒内不需要再发送预校验请求
                .allowCredentials(true);//允许客户端携带验证信息,即允许携带cookie
    }
}

二、具体使用

	@RequestMapping(value="/searchById",method={RequestMethod.GET})
    @ResponseBody
    @CrossOrigin("*")//配置文件已设置,可以省略。
    public JsonResult searchone(String blogId){
        return blogService.searchById(blogId);
    }

<think>好的,我现在需要帮助用户找到Java中实现请求的代码示例,特别是关于CORS的。首先,我要回忆一下用户提到的引用内容。用户提供了四个引用,其中引用1和2提到了设置响应头信息,比如Access-Control-Allow-Origin。引用3和4则提到了使用CORS过滤器或Spring的@CrossOrigin注解,特别是在方法上添加注解的例子。 接下来,我需要确定用户的需求。他们想要具体的代码示例来实现CORS。根据引用,有两种主要方法:一种是手动设置响应头,另一种是使用框架提供的注解或过滤器。对于手动设置,可能需要用到过滤器或者拦截器,在每次请求时添加必要的头信息。而使用Spring框架的话,@CrossOrigin注解或者全局配置会更方便。 然后,我需要确保提供的代码示例正确,并且符合Java的最佳实践。比如,在Spring Boot中,使用@CrossOrigin注解在控制器类或方法上,或者通过WebMvcConfigurer配置全局CORS设置。另外,如果用户使用的是Servlet过滤器,可能需要编写一个自定义的Filter类,并在web.xml或通过注解注册它。 还要注意安全性问题,比如不要将Access-Control-Allow-Origin设置为“*”在生产环境中,而是指定具体的名。同时,其他相关的头信息如Access-Control-Allow-Methods和Access-Control-Allow-Headers也需要正确设置,以允许特定的HTTP方法和头部。 最后,根据用户提供的引用,特别是引用4中的例子,使用@CrossOrigin注解是一个直接的方法,所以应该优先展示这个方法。同时,全局配置和过滤器的示例也需要包括,以满足不同场景的需求。确保代码示例正确,并解释每个部分的作用,帮助用户理解如何实现。</think>在Java中实现请求(CORS)的代码示例如下,根据具体场景可选择不同方式: --- ### 1. **使用`@CrossOrigin`注解(Spring框架)** 在控制器类或方法上直接添加注解,指定允许的来源: ```java @RestController public class DemoController { @CrossOrigin(origins = "http://example.com") // 允许指定来源 @GetMapping("/hello") public String hello() { return "Hello, CORS!"; } } ``` 此方式适用于方法级或类级粒度的控制[^4]。 --- ### 2. **全局配置(Spring Boot)** 通过实现`WebMvcConfigurer`接口配置全局规则: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://example.com", "http://localhost:8080") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); } } ``` 此配置对所有接口生效,支持多名、指定方法和头部[^3]。 --- ### 3. **手动设置响应头(Servlet过滤器)** 通过自定义过滤器添加CORS头信息: ```java @WebFilter("/*") public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setHeader("Access-Control-Allow-Origin", "http://example.com"); httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); httpResponse.setHeader("Access-Control-Max-Age", "3600"); chain.doFilter(request, response); } } ``` 此方式适用于非Spring项目或需要更灵活控制的场景[^1][^2]。 --- ### 关键HTTP响应头说明 - `Access-Control-Allow-Origin`: 允许访问的来源(名) - `Access-Control-Allow-Methods`: 允许的HTTP方法 - `Access-Control-Allow-Headers`: 允许的请求头 - `Access-Control-Max-Age`: 预检请求缓存时间(秒) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值