CDN可以通过跟踪我网站的访问者来创建某种统计数据,或者他们下载需要的图书馆而不共享他们访问的网页的网址吗?当从CDN获取jquery.min.js或其他资源时,CDN是否知道客户端正在访问哪个网站?
回答
是的,他们可以使用referer头字段:
HTTP引用(最初引荐的错误拼写)是标识网页的(地址的HTTP 头字段即URI 或IRI )链接到被请求的资源。通过检查引荐来源 ,新的网页可以看到请求来自何处。
领域是请求报头的一部分,其可能看起来像这样,例如,重新加载该页面将显示此链接googleapis(见控制台F12和网络选项卡):
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
发送此请求头:
Host: ajax.googleapis.com
User-Agent: Mozilla/5.0 (...)
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://stackoverflow.com/questions/30743915/does-cdn-know-which-website-the-client-is-visiting-when-fetching-jquery-min-js-o
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
报告其使用引荐来到哪个站点:
Referer: http://stackoverflow.com/questions/30743915/does-cdn-know-which-website-the-client-is-visiting-when-fetching-jquery-min-js-o
是的,他们知道请求资源的页面的URL(例如,通过查看Referer
标题)。所以他们可以跟踪哪些网站要求某个资源。唯一的例外是HTTPS页面通过非安全连接请求资源。在这种情况下,Referer
将不会被设置,但Origin
标题可能有一些帮助。
跟踪个人用户可以做得到的,但它是不切实际的一些原因:
CDN资源是为了通过浏览器被大量缓存,所以他们将被要求对许多不同的下载一次页面浏览量,使“被动”统计虚假。
强制用户下载访问的每个页面的资源会使CDN无意义,导致无故导航速度变慢,并导致CDN带宽过载。这是90年代GeoCities页面上长时间观看柜台使用的技术(叹息)。
跟踪用户至少需要设置识别cookie。这增加了Web服务的复杂性(因为它不再是一个简单的文件服务器)并且延迟了响应时间,因为必须以某种形式的DB或新生成的UID查找UID。 Etags也可能被滥用,同样存在cookies问题。
作为一种替代方案,使用查询字符串参数可以工作,但需要目标页面的协作,该目标页面必须包含UID作为每个请求的参数,这意味着URL不能被硬编码。我想这不是你说的。
综上所述,一个CDN 可以跟踪访问者,但这样做的缺点是实际上比假设的增益越大,承担的性能,以及相关的盈利能力是运行CDN的主要目标。如果分析比性能或操作的经济性更有价值,比如它可能是免费的CDN,那么可以通过应用点2和3来牺牲性能以获得洞察力。
在那一点上,必须证明收集的统计信息的可靠性,以便能够出售任何营销目的。此外,通常由CDN提供的文件的性质使它们相当无趣。例如,我不知道有多少人在那里使用某个特定版本的jQuery,从而获得了很多盈利。
那么为什么CDN是免费的?他们的利润在哪里?带宽成本,对吧? – knm
@knm几乎没有免费CDN是企业的核心部分。有些是作为一个侧面项目运行的,“因为它们可以”,或者因为它首先使它们受益(比如谷歌CDN,谷歌的所有网站都使用它),另一些则由捐赠赞助(如jQuery CDN)。微软和Amazon Cloudfront都提供对某些形式的CDN的付费访问,这意味着某个网站/ webapp的所有者支付更高的可用性和交付速度。我对这种业务的经济部分并不十分熟悉,所以确实可能有盈利的空间。矿是技术原因:) –
另请参阅编辑,@ knm。 –
- 1. Boto3资源和客户端是否相同?何时使用一个或其他?
- 2. Microsoft Azure CDN是真正的CDN还是其他东西?
- 3. 使用https从一个运行在http的网站访问CDN
- 4. Azure CDN网站
- 5. Intern4和CDN资源
- 6. 如何从CDN获取客户端真实IP
- 7. boto3从客户端获取资源
- 8. 我的jQuery CDN网址是否正确?
- 9. 无法加载资源:CDN网络:: ERR_CONNECTION_RESET
- 10. MySQL从网页(或其他网络资源)获取内容
- 11. 从客户端网站登录到其他网站
- 12. 带CDN的JSF 2资源?
- 13. 是否将资产缓存在CDN中
- 14. signalR客户端功能通过CDN
- 15. 我们可以检测一个网站是否在CDN上?
- 16. Javascript资源下载从CDN进度
- 17. 检测访问者是否正在离开网站或访问网站上的其他页面onbeforeunload
- 18. 如何知道另一个线程是否正在访问资源?
- 19. 从CDN重定向到CDN域的直接访问的主站点?
- 20. Azure网站的Azure CDN
- 21. 使用CDN for ASP.NET网站
- 22. Azure CDN网站较慢
- 23. 不允许抓取CDN网站
- 24. HTTParty当其他休息客户端成功时获取403
- 25. jquery UI在从Google Ajax cdn中获取时正在加载吗?
- 26. c3p0客户端超时,等待从com.mchange.v2.resourcepool.BasicResourcePool获取资源
- 27. 访问网站/网站是否正确?
- 28. 如何在访问我的网站时获取客户端MAC地址?
- 29. dgrid是否有CDN?
- 30. 如何知道网页是从其他网站返回
你确定吗? 当您点击时,您发送引荐人。 如果我在我的网站上放置了一张照片(热链接),那么jpg不会发送任何有关我的网站的数据...... – knm
是的,所有页面的资源都加载了正确的Referer标题。我刷新了这个页面,并且下面的文件'http:// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'加载了以下头文件'Referer:http:// stackoverflow .com/questions/30743915/did-cdn-know-which-website-the-client-is-visiting-when-fetching -jquery-min-js-o' –
你是如何检查它的? 以及如果我已经有从我的浏览器中缓存的谷歌CDN jquery.min.js,谷歌可以跟踪我的所有活动在stackoverflow.com或只是通知一次,我第一次访问该网站? – knm