Java 如何解决这个问题
时间: 2023-09-01 13:10:54 浏览: 89
java问题解决途径
Java 中可以通过使用 Servlet API 提供的 CORS 支持来解决跨域资源共享的安全问题。
在 Servlet 3.0 规范之后,Servlet API 提供了一种方便的方式来配置 CORS,即使用注解 `@CrossOrigin`。该注解可以用于类级别或方法级别,并允许配置允许跨域请求的来源、方法和头部信息等。
下面是一个使用 `@CrossOrigin` 注解来允许跨域请求的示例:
```java
@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET, RequestMethod.POST})
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
```
在上面的示例中,`@CrossOrigin` 注解指定了允许来自 `http://example.com` 的跨域请求,且仅允许 `GET` 和 `POST` 方法。如果请求的来源不在白名单中,或者请求的方法不在允许的方法列表中,服务器就会拒绝该请求。
除了使用注解之外,还可以通过在 `web.xml` 文件中配置 `CORSFilter` 来启用 CORS 支持。例如:
```xml
<filter>
<filter-name>CORSFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://example.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
上面的配置使用 Tomcat 提供的 `CorsFilter` 来允许来自 `http://example.com` 的跨域请求。这里的 `cors.allowed.origins` 参数指定了允许的来源。
阅读全文