无法下载远程https svg文件但嵌入<img/>内部是好的

时间:2017-01-05 14:24:07

标签: javascript ruby-on-rails httparty

我有一个https链接,嵌入<img>,一切都很好。例如https://jsfiddle.net/Lbhhtt6n/。但是,如果您尝试直接下载链接,例如使用链接https://version.gitlab.com/check.svg?gitlab_info=eyJ2ZXJzaW9uIjoiOC4xNi4wLXByZSJ9的浏览器直接打开它,则会返回404错误。

由于这个问题,我无法通过httparty

检查
response = HTTParty.head('https://version.gitlab.com/check.svg?gitlab_info=eyJ2ZXJzaW9uIjoiOC4xNi4wLXByZSJ9')
puts response.success? # always return false

它背后的魔力是什么?有人可以开导我吗?感谢。

1 个答案:

答案 0 :(得分:2)

如果您通知HTTP Refer标题,Gitlab会给您提供图片。否则,它会回复404.请参阅https://about.gitlab.com/handbook/sales-process/version_check详细信息。

当您尝试通过浏览器地址栏或任何其他工具获取资源而未明确设置此标头时,您将获得404。

但是,当您尝试将其作为页面资源时,请浏览您将此标题发送给您。

亲自尝试看看它的实际效果:

  

$ curl -v https://version.gitlab.com/check.svg?gitlab_info=eyJ2ZXJzaW9uIjoiOC4xNi4wLXByZSJ9

     

$ curl -v https://version.gitlab.com/check.svg?gitlab_info=eyJ2ZXJzaW9uIjoiOC4xNi4wLXByZSJ9 -e stackoverflow.com

查看Chrome开发者工具显示的差异:

作为页面资源:

enter image description here

从地址栏: enter image description here