12

考虑以下代码:

 <img src="http://website.com/Page/1"/>

“1”是要插入到 website.com 的“页面”页面中的某个表中的参数。这个页面的访问者(包含上面的代码)会导致页面执行并将 1 插入到表中吗?如果页面包含一些 Javascript 代码。如果我们访问包含上述代码的页面,它会被执行吗?

4

2 回答 2

13

浏览器,如果配置为加载和显示图像,将首先检查它是否在其自己的缓存中具有与 URL 匹配的文档为新鲜的(通过某些缓存标准)。如果没有,它将通过 HTTP 向 mysite.com 发送资源 /Page/1 的 GET 请求。然后发生什么取决于服务器。它可能只是从其资源中获取一个图像文件并将其发送到浏览器,或者它可能生成一个图像并发送它,或者它可能(而不是或除了这些东西之外)在其数据库中存储或更新某些东西,或者只是文件中的一个计数器,或者它被编程做的任何事情。

如果服务器发送的资源是图片数据,浏览器会尝试显示。如果它碰巧是一个 HTML 文档,它将被丢弃,并且浏览器将显示 alt 属性的值,或显示损坏图像的图标,或两者兼而有之。

于 2013-02-19T09:35:12.487 回答
1

当浏览器img在可见区域中找到此标签时(例如,不应将其隐藏display: none),它会将图像作为 http 请求执行。这也是统计跟踪的工作原理。

因此,由于它是一个常规的 http 请求,它将执行该 URL 的服务器端代码,该代码应该返回一个图像(只是一个空白的 1x1 gif),因此浏览器不会报告错误。

但请记住,如果您第二次访问此页面,浏览器可能会缓存图像。因此,要么在末尾附加一个随机字符串或时间戳(例如http://website.com/Page/1?23423412341),要么用 htaccess 告诉浏览器不要缓存它。

于 2013-02-19T09:24:50.303 回答