星期二, 7月 12, 2016

Simplest AJAX client / server with CORS

先談最簡單的 AJAX server:
  • NodeJS
  • Module: Express (optional)
  • 網路上一大堆 http.createServer(req, res) 範例
  • 防火牆設定
接著在 server 上準備一個 jQuery based 網頁去呼叫上述的服務,但因為網頁並沒有真的部署在任何 Web Server 上,所以在瀏覽器開啟的網址列會是以 file:// 開頭,一般受限於 CORS 會不能對 server 發起 Request,或精確地說,在瀏覽器預檢 preflight 失敗後就放棄,若開啟任何開發者工具之類的側錄看來像沒反應。針對各種瀏覽器的解決如下:
  • Chrome、Firefox、Safari:在 server js 加這一行
    • response.setHeader("Access-Control-Allow-Origin", "*");
  • IE:在網頁傳送 ajax 之前加這一行
    • $.support.cors = true;
  • Edge:以系統管理員身分開啟命令列提示,輸入
    • CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
這絕對是我看過最怪的解法了,不過有憑有據,也真的有效。