close

轉自 jsnwork.kiiuo.com/archives/2510/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  一樣沒問題~~

--

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dizzy03 的頭像
    dizzy03

    碎碎念

    dizzy03 發表在 痞客邦 留言(0) 人氣()