我對一個涉及Javascript終端的項目有個想法,該項目利用指定的PHP腳本作爲服務器來執行遠程功能。據我所知,同樣的原產地政策將成爲這樣一個項目的障礙,但看看我每天使用的谷歌分析,似乎他們有辦法大規模地避免這個問題。谷歌分析如何避免相同的原產地政策?
回答
的現代的方式,以允許跨域請求是服務器與下面的頭的任何請求作出響應:
Access-Control-Allow-Origin: *
這允許從任何主機,或者一個特定的主機的請求可以用來代替*
。這被稱爲跨源資源共享(CORS)。不幸的是,它在舊版瀏覽器中不受支持,所以在這種情況下你需要使用黑客來解決瀏覽器問題(比如可能是通過請求圖片的評論者)。
這看起來像一個「更清潔」的方式。好輸入 – Lee
Google Analytics,Google AdWords和幾乎所有其他分析/網絡營銷平臺都使用<img>
標籤。
他們加載他們的JS程序,那些程序處理你放在頁面上的任何跟蹤,然後他們創建一個圖像,並設置圖像的來源等於他們的服務器的域名,再加上所有的跟蹤信息到查詢字符串。
問題的關鍵在於它如何到達那裏並不重要:
服務器只關心被調用的URL內部的數據,而客戶端只關心對某個特定URL,而不是獲取任何返回值。
因此,有人選擇<img>
年和年前,公司一直在使用它。
有趣的感謝。至少可以這麼說,這似乎很難辦! – Lee
@Lee它是。但是,由於在AJAX成爲家喻戶曉的名字之前,網絡分析跟蹤和搜索引擎營銷一直以各種各樣的形式存在,並且每個人都仍然在將腳本包裝在CDATA評論標籤中。那時候,'img'標籤可能被選中是因爲'noscript'的好處。事實上,如果你看一下AdWords跟蹤,或者甚至是SiteCatalyst(一個你可能支付60,000美元/年的計劃)跟蹤,他們仍然在JS部分下面有一個'noscript'部分。所以JS會加載外部程序並構建一個與'noscript'版本相似的圖像。 – Norguard
@Lee儘管是黑客攻擊,但正確的做法會在數據中留下大量漏洞(甚至比使用這種脆弱方法提供的漏洞更大),因爲許多瀏覽器不支持CORS。再過5年,這可能是一個可行的解決方案,因爲每個男人,女人和烤麪包機都會灌輸交叉來源的JS。在此之前,我們堅持使用次最佳解決方案來最大限度地追蹤被追蹤的人數,這些數字歸結爲旨在100%無效的「」或「
演示一般來說,'script'標籤和JSONP格式,有時'iframe'使用。 – Haocheng
感謝提到jsonp,我不知道這個補充。我總是想知道爲什麼谷歌不分開JS和HTML,看起來'腳本'標籤對此至關重要。 – Lee
從我記憶中,GA插入(通過JS)一個'
',其src屬性包含GA服務器需要知道的所有信息(對嵌入圖像沒有跨域限制)。返回的實際圖像我相信是1x1空白圖像。 –
techfoobar