jQuery – 在 header 修改,解決跨網域 JSON、JSONP 的方法

通常使用 jQuery 要跨網域存取資料,會出現禁止訊息

通常我們會改用 JSONP,但是 JSONP 只允許使用 GET 方式處理。可以參考官方建議寫法,我這邊舉例 PHP 與 jQuery

PHP

 

jQuery

上面的 callback() 可以自動處理 json 與 jsonp 的回傳。注意上面這兩個例子的名稱要互相匹配:

  • php 的 $jsonp_callback_key
  • jQuery 的 jsonp

所以實際網址會變成類似這樣

 

非 GET 請求怎麼辦?

當 API 設計的要求是 POST、PUT、DELETE …… JSONP 不就沒辦法使用了?後來參考了網友發文發現可以這麼做

PHP

設定 header 為 Access-Control-Allow-Origin:* 或 Access-Control-Allow-Origin:允許的網域  就可以使用 JSON 而不使用 JSONP 啦!你也可以改成 header(‘Access-Control-Allow-Origin:http://localhost’); 那就只限制當發生跨網域行為時,只有從本機發出請求才允許。

jQuery

改用 json 以後發現可以成功唷!而且用 POST  一樣沒問題~~

Comments

發表迴響