<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                什么是跨域呢? > [https://segmentfault.com/a/1190000000718840](https://segmentfault.com/a/1190000000718840) 為什么不允許跨域呢? ![https://box.kancloud.cn/bf58b35c5499a5b8084da374e74555dd_2020x576.png](https://box.kancloud.cn/bf58b35c5499a5b8084da374e74555dd_2020x576.png) 總結:無論是瀏覽器,還是服務器,從用戶的安全角度出發,默認都是不允許進行跨域訪問的。而我們前后端分離的思想,將來需要將前臺和后臺布署到不同的服務器上,前臺和后臺擁有不同的域名。前臺將數據發送給不同域的后臺,后臺再數據返回不同域名的前臺。這就避免不了跨域的問題。 ## ServletResponseAware 在Struts中,我們使用實現`ServletResponseAware`接口的方法實現設置請求文件頭,從而實現跨域目的。 [http://127.0.0.1:8088/struts2-core-apidocs/org/apache/struts2/interceptor/ServletResponseAware.html](http://127.0.0.1:8088/struts2-core-apidocs/org/apache/struts2/interceptor/ServletResponseAware.html) 繼承后,我們實現其中的唯一的`setServletResponse(HttpServletResponse response)`方法 ``` package com.mengyunzhi.javaee.action.teacher; ... import org.apache.struts2.interceptor.ServletResponseAware; ... public class Index extends ActionSupport implements ServletResponseAware{ ... @Override public void setServletResponse(HttpServletResponse response) { // 設置發送文件頭:允許跨域的地址 response.setHeader("Access-Control-Allow-Origin", "*"); // 允許Credentials response.setHeader("Access-Control-Allow-Credentials", "true"); // 允許的請求方法 response.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); // 允許的請求頭 response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); } ... ``` 此時,我們再訪問[http://127.0.0.1:8080/javaee/teacher/](http://127.0.0.1:8080/javaee/teacher/), 查看控制臺的網絡選項卡,然后找到這條請求,查看響應信息: ![https://box.kancloud.cn/2706994bd227a6a9ffef35a55414c699_782x236.png](https://box.kancloud.cn/2706994bd227a6a9ffef35a55414c699_782x236.png) 發現在響應的一欄中,增加了一項:Access-Control-Allow-Origin,值為*。當我們的瀏覽器接收到此項信息時,就不會提示非法跨域的提示了。當然了,不僅如此,為了更好的配合跨域,在上述`setServletResponse`方法中,我們還增加了其它的幾個選項。有了這幾項設置,我們的后臺才真正的成為了一個可用的API。 <hr /> ``` package com.mengyunzhi.javaee.action.teacher; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import com.mengyunzhi.javaee.entity.Teacher; import com.opensymphony.xwork2.ActionSupport; public class Index extends ActionSupport implements ServletResponseAware{ /** * 定義serialVersionUID,增強兼容性 */ private static final long serialVersionUID = 1L; // 教師列表 類型為List,每項均為Teacher。 private List<Teacher> teachers; // 當前頁 private int page = 1; // 每頁大小 private int pageSize = 2; // 查詢姓名 private String name = ""; // 顯示接收到的page信息 public int getPage() { return page; } // 接收請求的page信息 public void setPage(int page) { this.page = page; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setTeachers(List<Teacher> teachers) { this.teachers = teachers; } // V層在展示數據teachers的時候,將自動調用該方法 public List<Teacher> getTeachers() { return teachers; } // 該execute方法將被自動調用, 方法的返回類型必須為String public String execute() { // 獲取教師列表 // 未輸入姓名,則查詢所有信息 if (name.equals("")) { teachers = Teacher.paginate(page, pageSize); // 輸入姓名,則進行模糊查詢 } else { teachers = Teacher.paginate(name, page, pageSize); } return SUCCESS; } @Override public void setServletResponse(HttpServletResponse response) { // 設置發送文件頭:允許跨域的地址 response.setHeader("Access-Control-Allow-Origin", "*"); // 允許Credentials response.setHeader("Access-Control-Allow-Credentials", "true"); // 允許的請求方法 response.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); // 允許的請求頭 response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看