我需要使用javascript/jquery獲取url而不是php。如何使用javascript/jquery獲取url?
我讀過,你可以做到這一點,如果你有一個PHP代理,但這意味着它仍然通過PHP。因此它仍然是提取它的服務器的IP地址。
只能用前端獲取url,從而獲取客戶端的ip?
我需要使用javascript/jquery獲取url而不是php。如何使用javascript/jquery獲取url?
我讀過,你可以做到這一點,如果你有一個PHP代理,但這意味着它仍然通過PHP。因此它仍然是提取它的服務器的IP地址。
只能用前端獲取url,從而獲取客戶端的ip?
對於AJAX請求存在Same origin policy。這可以防止Javascript(例如,本網站)向gmail.com(使用您的cookies)發出請求,閱讀您的電子郵件並將其上傳到StackOverflow服務器。在stackoverflow.com上的Javascript只能向該域上的頁面發出AJAX請求。
正如您所看到的,這對安全至關重要。請求必須由運行在您的Web服務器上的代理完成 - PHP可以使用,但還有其他解決方案。例如,Ajax Cross Domain是一個AJAX庫,與運行在服務器上的Perl腳本進行通信,以模擬其他域的AJAX請求。
也可以通過javascript include(腳本標籤),圖片標籤等在其他域上發出請求,但在這些情況下,您無法讀取頁面內容。
您無法使用iframe執行此操作:腳本無法查看iframe的內部結構,除非它們與腳本位於同一個域中。
因此總之,使用代理。
這意味着我必須使用服務器的IP地址獲取頁面?沒有辦法用客戶端的IP獲取它,然後將結果發送回我的服務器?但谷歌地圖API不允許我們只從JavaScript提出請求,從客戶端的IP獲取結果?那麼爲什麼那個工作呢? – 2010-03-21 02:07:24
使用Google Maps API,您可以從Google的服務器加載Javascript(沒有任何問題 - 您可以運行JavaScript,但您只能看到文件的內容)。平鋪圖片等位於Google的服務器上,但始終允許鏈接到外部圖片。通過使用特殊請求書寫
問題是,jQuery會使用AJAX獲取url,並且由於潛在的安全性(根據same-origin policy),AJAX不會運行跨域。
但是,有一些方法可以模擬這種情況,如果您在iframe中加載頁面,則可以通過在iframe上使用innerHTML來檢索數據。以下是使用jQuery的示例腳本:http://code.google.com/p/jquery-crossframe/來源
2010-03-21 02:00:12 Wolph
現代瀏覽器將不允許您獲取跨域框架的「innerHTML」。 – 2010-03-21 02:02:26
你是對的,你只能通過片段與iframe進行交流。我仍然覺得這仍然是可能的。 – Wolph 2010-03-21 03:47:45