sae的Storage开启了防盗链功能以后发现UEditor中的图片无法显示了,这个问题已将发到Sae和Ueditor的论坛上了等待回复。

我初步估计是Ueditor编辑器在请求图片时没有提交求情者的域名,白名单中不允许这个网站的显示storage中的图片,我发现baidu空间的图片在编辑器中可以显示,反而在页面中无法显示,初步推断是防盗链设置的问题。

我不启用防盗链在Ueditor中是可以正常显示的。

原因

经过使用chrome的开发工具跟踪,比较,发现在编辑器中插入图片时是用javascript实现,此时的请求中没有包含“Referer“参数,而在能正确显示图片的地方都包含了此参数,而且此参数的域名内容都在Storage的白名单中,依次推断防盗链时应该是依据此参数来判断的。那么什么是Referer呢?

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。

解决办法

为了解决此问题就要想办法修改插入图片时的Referrer。

我用的是百度的UEditor编辑器,现在需要仔细看看实现脚本。

经过了解,本地Referrer是无法用javascript修改,那看来解决问题的办法只有在sae的storage上想办法了,

要不关闭防盗链功能,要不然storage支持空Referrer功能。

现在我直接在地址栏输入storage三的图片地址都无法显示图片,看来真的是支持Referrer。

现今的情况下只能先关闭防盗链功能了。