在Java中,處理CORS(跨域資源共享)跨域請求的頭部信息設置通常是通過設置HTTP響應頭實現的。以下是一個簡單的示例,展示了如何在Java Servlet中設置CORS相關的響應頭:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/cors-example")
public class CorsExampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 設置CORS相關的響應頭
response.setHeader("Access-Control-Allow-Origin", "*"); // 允許任何域名訪問
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); // 允許的HTTP方法
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); // 允許的自定義請求頭
response.setHeader("Access-Control-Allow-Credentials", "true"); // 允許攜帶cookie
response.setHeader("Access-Control-Max-Age", "3600"); // 預檢請求的緩存時間
// 處理實際的請求
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("{\"message\": \"Hello from CORS-enabled servlet!\"}");
}
}
在這個示例中,我們設置了以下CORS相關的響應頭:
Access-Control-Allow-Origin
: 指定允許訪問的域名。可以設置為*
,表示允許任何域名訪問;也可以設置為特定的域名,如https://example.com
。Access-Control-Allow-Methods
: 指定允許的HTTP方法,如GET
、POST
等。Access-Control-Allow-Headers
: 指定允許的自定義請求頭。Access-Control-Allow-Credentials
: 指定是否允許攜帶cookie。設置為true
表示允許。Access-Control-Max-Age
: 指定預檢請求(preflight request)的緩存時間,以秒為單位。預檢請求是瀏覽器在發送實際請求之前發送的一種OPTIONS請求,用于檢查服務器是否允許跨域請求。請注意,這個示例僅用于演示目的。在實際項目中,你需要根據具體需求來設置這些響應頭。