2012-01-18 63 views
0

有时我会遇到一个图像,我不能刮,以便它可以保存。这方面的一个例子是:如何刮取没有扩展名的图像?

https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487

当我打从Internet Explorer我看到的图像的URL,但是当我尝试从代码得到它下面,我得到了以下错误消息“System.Net.WebException远程服务器返回错误:(403)禁止”错误与GetResponse的:

string url = "https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487"; 
WebRequest request = WebRequest.Create(url); 
WebResponse response = request.GetResponse(); 

如何得到这个图像的任何想法?

编辑:

我能够保存图像,确实有扩展名。例如,我可以刮下面的图片就好了:

https://s3.amazonaws.com/plumdistrict.com-production/perks/12659/image/original.jpg?1326828951

回答

0

那么,它看起来像它正在从一个脚本(可能是从数据库中检索)生成。服务器应该发送一个文件/内容类型与...一起去,但它似乎不是,我认为这是违反标准。

我的Linux系统盒知道这是一张JPEG图像,因为它检查文件头而不是依赖扩展名。也许有一种工具可以在Windows中执行相同的操作?

编辑:其实,在进一步的思考中,你会得到一个。也许服务器实际上阻止你以这种方式检索文件。

1

尽管HTTP最初应该是无状态的,但仍有很多实现依赖于它是无状态的。我可以配置我的网络服务器,只接受请求“http://mydomain.com/sexy_avatar.jpg”,如果你提供了一个证明你已经登录的cookie。如果没有,我发送给你一个重定向303到“http:// mydomain .COM/avatar_for_public_use.jpg”。

亚马逊可能也会这样做。尝试使用Chrome加载网页,然后查看开发者模式下的网络视图(CTRL + SHIFT + J)以查看提供给网站的所有标题。也许你甚至需要在同一个会话中进行完整的导航,然后才能看到图像。在我开发的许多Web应用程序中,情况确实如此:-)

+0

+1有价值的答案 – mKorbel 2012-01-18 11:58:52

+0

让我看看我是否正确理解你。我想你说的是,亚马逊可能会要求我通过cookie来传递它的某些会话状态,但是,我可以在不通过IE登录的情况下获取此图像。 – 2012-01-18 21:45:46

+0

为了验证您的理论,我继续通过cookie以编程方式提交图片请求,但仍无法获取此图片。我仍然得到403错误。我知道会话状态是正确的,因为我可以访问仅限会员的页面。另外,我可以访问并保存除此之外的所有图像。我仍然好奇,如果这没有exentsion可能是原因。 – 2012-01-18 21:53:38

相关问题