javax.servlet.http.HttpServlet 设置跨域
时间: 2024-10-16 16:20:55 浏览: 50
设置`javax.servlet.http.HttpServlet`的跨域通常涉及两部分:服务器端的`web.xml`配置和客户端的CORS策略。
1. **web.xml配置**[^2]:
```xml
<!-- 在web.xml文件中 -->
<web-app>
<servlet>
<servlet-name>CrossDomainServlet</servlet-name>
<servlet-class>com.example.CrossDomainServlet</servlet-class>
</servlet>
<!-- 映射Servlet到特定URL -->
<servlet-mapping>
<servlet-name>CrossDomainServlet</servlet-name>
<url-pattern>/cross-domain</url-pattern>
</servlet-mapping>
<!-- 允许跨源请求 -->
<security-constraint>
<web-resource-collection>
<url-pattern>/cross-domain</url-pattern>
</web-resource-collection>
<allow-origin>*</allow-origin> <!-- 允许来自所有源的请求 -->
</security-constraint>
</web-app>
```
在这个配置中,`<allow-origin>`标签允许来自所有源(`*`)的请求,这意味着这个Servlet可以响应任何来源的跨域请求。
2. **CORS策略**[^1] (JavaScript):
尽管`web.xml`控制服务器端,但浏览器仍需要支持CORS(Cross-Origin Resource Sharing)。前端可以通过JavaScript来设置CORS头,如在发送Ajax请求时添加`withCredentials: true`和适当的`Access-Control-Allow-*`头:
```javascript
fetch('http://your-server-url/cross-domain', {
method: 'GET',
credentials: 'include', // 如果需要发送cookies
})
.then(response => response.json())
.catch(error => console.error('Error:', error));
```
阅读全文