Re: [問題] cross domain request?
※ 引述《flowwinds (..)》之銘言:
: 大家好,
: 最近小弟剛學ajax, ajax的網址就直接連到別的網站去
: 大家好,
: 最近小弟初學ajax, ajax網址是設定連到別的網站去
: 在firefox+firebug環境下一直出現錯誤訊息"0x80004005 (NS ERROR FAILURE).."
: 後來才查到這可能是作cross domain request造成的
: 到本機端設置server, 並且連結網址設為本機端的就好了..
: 不過想請教各位先進..為何不能用XHR作cross domain request呢?
: 謝謝..
安全性理由 , 如果你了解 session 原理 , 解釋起來會更簡單.
簡單來講 , 如果開放 cross domain request , 那可能會發生以下情形 .
1. 我平常會習慣性設定自動登入 gmail/facebook跟其他網站 ,
2. 我明明在瀏覽B網站 , 他卻一直request和他不相關的A網站 .
而且還剛好是我習慣自動登入的這類網站 ,
於是我可能在毫無警示的狀況下 ,
被取走我 facebook的基本資料 , 好友資料 ,
甚至誇張一點的 , 被砍掉我所有facebook資料 ,
就只因為我B網站頁面的 js 有權限代表[我]去瀏覽A網站 ,
並進行 get/post 行為 , 你說這是不是很可怕. XD
(這裡有個重點中的重點 , 執行js時 , 執行客體是使用者本身 ,
也就是瀏覽這個網頁的每個使用者 , 而不是這個站.)
故 js 無法透過 xmlHttpRequest 或 iframe , 去[取得]任何外站的資料.
(觸發瀏覽行為 ,像window.open則是 OK 的.)
唯一的例外就是從外站讀入 javascript 檔案/圖片 ,
所以很多網站提供 json 格式資料以供外部存取 .
對於 cross domain request 的對應方式 ,
通常都是透過 server side 的代理去存取對方網站 .
這時候之所以會 ok 的理由在於 , 執行客體變成網站本身 ,
也就是使用者教唆網站去對其他網站頁面進行存取 ,
就不會出現如前所述無法避免的安全性問題了.
(畢竟站對站不會有使用者的session資料 ,
相對的 , 對於一些需要帳密存取的網站 ,
就需要使用者提供帳號給網站才能代理操作.)
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.218.161
推
04/14 22:29, , 1F
04/14 22:29, 1F
推
04/16 03:25, , 2F
04/16 03:25, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章