看板 Ajax 關於我們 聯絡資訊
最近在練習用 ajax 存取 json 程式碼大概像是這樣: ---------------------------------------- $.ajax({ url: "https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=3", type: "GET", dataType: 'json', error: function(){ console.log("error"); }, success: function(data){ console.log("success"); console.log(data); } }); ---------------------------------------- 錯誤訊息如下: XMLHttpRequest cannot load https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=3. No 'Access-Control-Allow-Origin' header is present on the requested resource. 查了一下大概知道是跨網域問題 看網路上的幾個解法不外乎是 JSONP 和 CORS 但我的理解是,這兩個方法都需要後端 API 本身的配合否則無法解決 純前端的角色來看是否無法解決這個問題呢? 概念有些模糊,有什麼不對的地方或是更好的方法,還請各位指正 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.177.226 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1492804276.A.086.html
s25g5d4: 對,沒辦法解決,不然就同源政策不就沒意義了 04/22 07:39
ssccg: 就不能用ajax抓,通常API不會做成給任意網頁直接存取 04/22 07:40
tentenlee: 請問一下 後台api怎麼做到防其他網頁call呀? 04/23 01:38
tentenlee: 只找到去判斷一些header去做,可是這些都可以自己改 04/23 01:41
ssccg: 其他網頁是指ajax的話,不用做什麼預設就不行了 04/23 02:03
ssccg: 如果是任意client,只能做authentication或擋IP吧 04/23 02:03
aznchat100: 其實chrome有CORS ext 練習時可以開起來玩玩 04/25 05:37
visa9527: iframe是你的好朋友 04/25 10:40
visa9527: 如果API那邊沒什麼檢查機制,只要傳對 GET 就能回應的話 04/25 10:42
visa9527: 就create個iframe把網址用API參數帶過去 04/25 10:42
visa9527: 之後再parse iframe document內容轉成XML或JSON 04/25 10:44
ssccg: cross domain的iframe document內容是取不到的吧 04/25 11:44
ssccg: 同源政策也包含不同源的frame不能直接互相存取 04/25 11:48