ActionContext
是 Struts2 框架中的一個核心組件,它封裝了與當前請求相關的所有信息。在處理跨域請求時,可以使用 ActionContext
來設置和獲取請求的頭部信息、參數等。
以下是一個簡單的示例,說明如何使用 ActionContext
處理跨域請求:
首先,確保你的項目中已經引入了 Struts2 相關的依賴。
在你的 Struts2 動作類中,獲取 ActionContext
實例:
import com.opensymphony.xwork2.ActionContext;
public class MyAction {
public String execute() {
// 獲取 ActionContext 實例
ActionContext actionContext = ActionContext.getContext();
// ...
}
}
Access-Control-Allow-Origin
:import javax.servlet.http.HttpServletResponse;
public class MyAction {
public String execute() {
// 獲取 ActionContext 實例
ActionContext actionContext = ActionContext.getContext();
// 獲取 HttpServletResponse 對象
HttpServletResponse response = (HttpServletResponse) actionContext.get("request").getResponse();
// 設置跨域請求的頭部信息
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
// ...
}
}
public class MyAction {
public String execute() {
// ...
}
public String options() {
// 獲取 ActionContext 實例
ActionContext actionContext = ActionContext.getContext();
// 獲取 HttpServletResponse 對象
HttpServletResponse response = (HttpServletResponse) actionContext.get("request").getResponse();
// 設置跨域請求的頭部信息
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
// 返回成功響應
return "success";
}
}
options
方法:<struts>
<package name="default" extends="struts-default">
<action name="myAction" class="com.example.MyAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">/success.jsp</result>
<result name="input">/input.jsp</result>
<param name="method">options</param>
</action>
</package>
</struts>
現在,當客戶端發起跨域請求時,服務器會正確處理并返回相應的響應。