如果我們寫 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");
}