如果我們寫 Javascript XMLHttpRequest  只能傳遞訊息自己主機上,如果要傳到其他台電腦,前端的 Javascript 一定會報錯,因為安全性問題

所以我們必須要在Java Servlet 上,加入授權

以下是可以接受所有前端的 AJAX,但是這種安全性很低,建議接受的網址那邊不要跟我一樣打 * 星號,測試的時候可以這樣做,正式發表請打授權的網址或IP

接受的方式也是不要所有 GET, POST, PUT....最好也只有一個比較恰當

// 另外我用 Jetty, 似乎 doPost() 與 doOptions() 各寫一次才不會報錯

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                                                         throws ServletException, IOException {
    fixHeaders(resp);
}

@Override
protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
                                                         throws ServletException, IOException {
    fixHeaders(resp);
}

private void fixHeaders(HttpServletResponse response) {

    response.setContentType("text/html");
    response.setHeader("Cache-control", "no-cache, no-store");
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Expires", "-1");

    response.addHeader("Access-Control-Allow-Origin", "*"); // 授權的網址,星號代表接受所有
    response.addHeader("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS, DELETE"); // 接受的方式
    response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Content-Length");
    response.addHeader("Access-Control-Max-Age", "86400");
}





創作者介紹
創作者 黃彥霖 的頭像
黃彥霖

彥霖 實驗筆記

黃彥霖 發表在 痞客邦 留言(0) 人氣()