2012-12-01 48 views
7

我對一個涉及Javascript終端的項目有個想法,該項目利用指定的PHP腳本作爲服務器來執行遠程功能。據我所知,同樣的原產地政策將成爲這樣一個項目的障礙,但看看我每天使用的谷歌分析,似乎他們有辦法大規模地避免這個問題。谷歌分析如何避免相同的原產地政策?

+1

演示一般來說,'script'標籤和JSONP格式,有時'iframe'使用。 – Haocheng

+0

感謝提到jsonp,我不知道這個補充。我總是想知道爲什麼谷歌不分開JS和HTML,看起來'腳本'標籤對此至關重要。 – Lee

+3

從我記憶中,GA插入(通過JS)一個'',其src屬性包含GA服務器需要知道的所有信息(對嵌入圖像沒有跨域限制)。返回的實際圖像我相信是1x1空白圖像。 – techfoobar

回答

11

的現代的方式,以允許跨域請求是服務器與下面的頭的任何請求作出響應:

Access-Control-Allow-Origin: * 

這允許從任何主機,或者一個特定的主機的請求可以用來代替*。這被稱爲跨源資源共享(CORS)。不幸的是,它在舊版瀏覽器中不受支持,所以在這種情況下你需要使用黑客來解決瀏覽器問題(比如可能是通過請求圖片的評論者)。

+0

這看起來像一個「更清潔」的方式。好輸入 – Lee

11

Google Analytics,Google AdWords和幾乎所有其他分析/網絡營銷平臺都使用<img>標籤。

他們加載他們的JS程序,那些程序處理你放在頁面上的任何跟蹤,然後他們創建一個圖像,並設置圖像的來源等於他們的服務器的域名,再加上所有的跟蹤信息到查詢字符串。

問題的關鍵在於它如何到達那裏並不重要:
服務器只關心被調用的URL內部的數據,而客戶端只關心對某個特定URL,而不是獲取任何返回值。
因此,有人選擇<img>年和年前,公司一直在使用它。

+0

有趣的感謝。至少可以這麼說,這似乎很難辦! – Lee

+1

@Lee它是。但是,由於在AJAX成爲家喻戶曉的名字之前,網絡分析跟蹤和搜索引擎營銷一直以各種各樣的形式存在,並且每個人都仍然在將腳本包裝在CDATA評論標籤中。那時候,'img'標籤可能被選中是因爲'noscript'的好處。事實上,如果你看一下AdWords跟蹤,或者甚至是SiteCatalyst(一個你可能支付60,000美元/年的計劃)跟蹤,他們仍然在JS部分下面有一個'noscript'部分。所以JS會加載外部程序並構建一個與'noscript'版本相似的圖像。 – Norguard

+1

@Lee儘管是黑客攻擊,但正確的做法會在數據中留下大量漏洞(甚至比使用這種脆弱方法提供的漏洞更大),因爲許多瀏覽器不支持CORS。再過5年,這可能是一個可行的解決方案,因爲每個男人,女人和烤麪包機都會灌輸交叉來源的JS。在此之前,我們堅持使用次最佳解決方案來最大限度地追蹤被追蹤的人數,這些數字歸結爲旨在100%無效的「」或「

  • 11. 如何在Mozilla中解決相同的原產地策略
  • 12. 谷歌Analytics(分析)API - 沒有註冊原產地
  • 13. 爲本地域禁用Chrome的相同原產地策略
  • 14. 使用瀏覽器插件規避了相同的原產地策略
  • 15. 避免谷歌分析將彈出窗口分類爲入口
  • 16. 谷歌地圖:避免顯示海
  • 17. 谷歌地圖 - 避免文件
  • 18. 谷歌Analytics(分析)目標渠道相同目的地
  • 19. 谷歌分析谷歌地圖API
  • 20. 如何避免從谷歌圖表
  • 21. 政策問題:谷歌播放
  • 22. 如何使用谷歌產品搜索/谷歌購物設置谷歌分析?
  • 23. 禁用Android Chrome上的相同原產地策略
  • 24. 儘管有相同的原產地策略,Flash/Javascript上傳
  • 25. Google Chrome中的相同原產地策略實施
  • 26. 如何避免雙擊谷歌地圖中的標記?
  • 27. jquery地址谷歌分析
  • 28. 谷歌Analytics API,避免OAuth
  • 29. CORS問題甚至包括原產地政策
  • 30. 如何在Safari(Windows 7)中禁用相同的原產地策略?