OpenURI公开投掷403禁止

时间:2014-10-07 20:22:49

标签: ruby ubuntu ruby-on-rails-4 open-uri

我编写的代码允许用户通过Google Image Search API搜索特定图像,然后使用Carrierwave的远程图像功能下载这些图像。我们收到错误报告,虽然某些网址正在抛出403 Forbidden错误,我们将其追溯到

Kernel.open(url)

扫描现有问题让我感到“'open_http': 403 Forbidden (OpenURI::HTTPError) for the string “Steve_Jobs” but not for any other string”,这表明问题是由于缺少用户代理,因此我们将其添加到了我们的电话中。

Kernel.open(url, 'User-Agent' => "Ruby/#{RUBY_VERSION}")

这解决了我们的开发环境中的问题,但它在我们的生产环境中根本没有任何影响。这是最令人沮丧的部分。我的生产环境(在AWS EC2 Ubuntu 12.04上运行)每次都失败,并且URL比我的开发环境(OSX 9.5)要多得多。这两个环境都运行ruby 2.0.0-p353和rails 4.0.5。

我们已经隔离了几个测试网址,我们可以不断重新创建此问题。

示例:http://www.lowes.com/images/LCI/Planning/HowTos/ht_BuildaHomePlayground_kit.jpg

我的想法已经不多了,但它似乎是AWS框特有的(因为它在dev中工作)所以AWS可能使用某种出站过滤器/代理或者Ubuntu 12.04有一个OpenURI的已知问题?

搜索互联网开始耗尽选项。

更新

我有两个运行的AWS实例,它们本来应该是相同的,但经过仔细检查,一个运行GNU / Linux 3.2.0-58-virtual并且上面的代码正常运行(这就是我的暂存环境) ,另一个是运行GNU / Linux 3.2.0-68-virtual,上面的代码失败了(这就是我的生产环境)。因此,问题似乎在于58和68之间的任何变化。

目前,我正在切换我的生产和登台环境,以便解决问题,尽管感觉这是一个临时的无效修复,因为登台环境可能会在某个时候升级,从而使我们回到正方形

0 个答案:

没有答案
相关问题