2013-04-21 84 views
1

背景: 我使用Spring web MVC以及JSP和HTML/JavaScript来编写网站。我添加了一个搜索功能,它向imdbapi.org发送查询并接收包含电影/电视节目信息(通过AJAX)的JSON对象。 JSON对象包含每个结果的“海报”字段,这是图像的URL(在imdb服务器上)。然后将结果出现显示海报如果有的话,使用jQuery ..当部署到服务器时,图像获取403禁止

someDiv.append($("<img src='"+results[i].poster+"'></img'").addClass("resultImg")); 

问题: 上内置的服务器运行的STS和本地访问例如,当这工作绝对没问题。

http://localhost:8080/myWebPage.whatever 

我有一个安装了Tomcat 7的Ubuntu服务器盒,当部署到服务器时,我得到每个图像403错误。从铬控制台例如:

GET http://ia.media-imdb.com/images/M/[email protected]@._V1._SY317_CR5,0,214,317_.jpg 403 (Forbidden) 

更多信息: 在Chrome和Firefox有同样的结果进行测试。 如果我不能修复,然后一个解决办法是下载到我想在服务器上的一个临时文件夹...

这是我与Tomcat服务器箱的配置问题?

+0

当你从你的网页获得一个403,你可以检查你是否得到相同的,如果你通过Chrome请求相同的图像资源(例如从不同的标签?) – 2013-04-21 20:47:47

+0

图像加载好在一个新的标签... – DairyLea 2013-04-21 20:53:44

回答

2

这是一个配置问题,我的箱子与tomcat服务器?

不,一点也不,你的服务器配置无关与外部资源的辅助功能,如果您收到@._V1._SY317_CR5,0,214,317_.jpg 403 (Forbidden) - 这显然意味着是服务器拒绝你的要求。

,它似乎的很多人都有这些类型的问题,IMDB - see this

+0

这就是我最初认为。但它在部署在运行在eclipse(sts)的服务器上时工作正常..我没有得到403.它只是当它被部署在我的服务器上,这导致了这个问题.. – DairyLea 2013-04-21 21:02:43

+1

可能是,请求来自域(_您的server_)被阻止。 – 2013-04-21 21:26:28

1

我已经“使工作”,它不是一个直接解决问题,但解决方法。使用我的服务器上我下载图像到Java的内存,然后返回到该网页的本地代理...

的Java(服务器端)

@RequestMapping(value="/pages/proxyImg") 
public ResponseEntity<byte[]> proxyImage(String url) { 
    log.info("Image Proxy server: " + url); 
    try { 
     final HttpHeaders headers = new HttpHeaders(); 
     headers.setContentType(MediaType.IMAGE_JPEG); 
     return new ResponseEntity<byte[]>(IOUtils.toByteArray(new URL(url).openConnection().getInputStream()), headers, HttpStatus.CREATED); 
    } catch(Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

的Javascript

someDiv.append($("<img src='"+"proxyImg.htm?url="+results[i].poster+"'></img'")); 
相关问题