簡體   English   中英

使用Jquery(不是AJAX)的跨域請求

[英]Cross Domain request with Jquery (not AJAX)

我不知道是否可能,但我想要的是創建一些腳本,掃描到我的服務器上沒有的網頁並抓住它的源代碼,這樣我就可以使用一些數據,比如PERL或Rails腳本,但是使用Jquery / Javascript

那可能嗎?

在一般情況下,不可以,因為同源策略不能從客戶端進行,這會阻止您加載並查看從不同來源加載的內容的HTML和腳本源。 (當然,你可以在服務器上用JavaScript做這個 - NodeJS,Rhino和類似的。)

但是,如果其他域支持跨源資源共享,並且您使用的瀏覽器也支持它 ,則可以允許另一端(另一個網站)允許來自您的源(或所有源)的代碼訪問它。 但是另一端必須允許它。

您還將在此上下文中聽到JSON-P ,但這只允許您從另一端獲取數據(而不是HTML源等),並要求另一端明確支持它。

所以你可能需要涉及服務器。 但它並不一定表示它必須是您的服務器:出於某些目的,您可以將YQL用作跨域代理

不能從客戶端獲取其他網頁的HTML代碼。 除非您能夠配置其他服務器。

http://en.wikipedia.org/wiki/Same_origin_policy了解更多信息

同源政策

同源策略是對Web內容JavaScript代碼可以與之交互的全面安全限制。 當網頁包含元素或打開其他瀏覽器窗口時,它通常會發揮作用。 在這種情況下,同源策略管理一個窗口或框架中JavaScript代碼與其他窗口和框架內容的交互。 具體來說,腳本只能讀取與包含腳本的文檔具有相同原點的窗口和文檔的屬性。

文檔的來源定義為加載文檔的URL的協議,主機和端口。 從不同Web服務器加載的文檔具有不同的來源。 通過同一主機的不同端口加載的文檔具有不同的來源。 加載了http:協議的文檔與加載了https:協議的文檔的來源不同,即使它們來自同一個Web服務器。

重要的是要理解腳本本身的來源與同源策略無關:重要的是嵌入腳本的文檔的來源。 例如,假設主機A托管的腳本(使用元素的src屬性)包含在主機B提供的網頁中。該腳本的來源是主機B,並且腳本可以完全訪問內容。包含它的文檔。 如果腳本打開一個新窗口並從主機B加載第二個文檔,則該腳本還可以完全訪問該第二個文檔的內容。 但是,如果腳本打開第三個窗口並將主機C(甚至主機A中的文檔)加載到其中,則同源策略生效並阻止腳本訪問此文檔。

作者:David Flangan:Javascript; 明確指南

從最純粹的問題來看,是的,這是可能的,但我覺得你誤解了這些技術的運作方式。 即使x-domain請求是可能的,javascript也無法從外部源收集數據,除非通過AJAX在瀏覽器中使用。 我說答案是肯定的原因是因為這些限制僅適用於在瀏覽器中執行javascript時。 例如,如果你將javascript與say.js結合使用,則規則完全不同,因為javascript能夠創建套接字並且x-domain限制不再適用。

也許您應該澄清您的問題,以便提供更合適的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM