Java 部署到服务器时禁止获取403映像

Java 部署到服务器时禁止获取403映像,java,javascript,html,spring-mvc,tomcat7,Java,Javascript,Html,Spring Mvc,Tomcat7,背景: 我正在使用SpringWebMVC以及JSP和HTML/JavaScript来编写一个网站。我添加了一个搜索函数,它向imdbapi.org发送一个查询,并接收一个包含电影/电视节目信息的JSON对象(通过AJAX)。JSON对象包含每个结果的“poster”字段,它是图像的URL(在imdb服务器上)。然后使用jQuery显示结果,显示海报(如果可用) someDiv.append($("<img src='"+results[i].poster+"'></img'"

背景: 我正在使用SpringWebMVC以及JSP和HTML/JavaScript来编写一个网站。我添加了一个搜索函数,它向imdbapi.org发送一个查询,并接收一个包含电影/电视节目信息的JSON对象(通过AJAX)。JSON对象包含每个结果的“poster”字段,它是图像的URL(在imdb服务器上)。然后使用jQuery显示结果,显示海报(如果可用)

someDiv.append($("<img src='"+results[i].poster+"'></img'").addClass("resultImg"));
我有一个安装了Tomcat7的ubuntu服务器盒,当部署到服务器上时,每个映像都会出现403错误。chrome控制台的示例:

GET http://ia.media-imdb.com/images/M/MV5BMTY2NDY4NDA0OV5BMl5BanBnXkFtZTcwNTI4MzUyMQ@@._V1._SY317_CR5,0,214,317_.jpg 403 (Forbidden) 
更多信息: 已经在chrome和firefox中进行了测试,结果相同。 如果我无法修复,那么一个解决方案是下载到服务器上的临时文件夹,我想

这是我的tomcat服务器机箱上的配置问题吗?

这是我的tomcat服务器机箱上的配置问题吗

不,一点也不,如果您获得
@.\u V1.\u SY317.\u CR5,0214317.\u jpg 403(禁止)
,则服务器配置与外部资源可访问性无关-这显然意味着服务器拒绝了您的请求

似乎很多人在IMDB上都有这样的问题-

我已经“让它工作起来了”,它不是问题的直接解决方案,而是一个解决办法。使用服务器上的本地代理,我将图像下载到java内存中,然后返回到网页

Java(服务器端)

@RequestMapping(value=“/pages/proxyImg”)
公共响应属性代理映像(字符串url){
log.info(“图像代理服务器:”+url);
试一试{
最终HttpHeaders=新HttpHeaders();
headers.setContentType(MediaType.IMAGE\u JPEG);
返回新的ResponseEntity(IOUtils.toByteArray(新的URL(URL).openConnection().getInputStream()),headers,HttpStatus.CREATED);
}捕获(例外e){
e、 printStackTrace();
返回null;
}
}
Javascript

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

someDiv.append($)(“当你从网页上获得403时,如果你通过Chrome请求相同的图像资源(比如从另一个选项卡?),你能检查一下你是否得到了相同的图像资源)图像在一个新的选项卡中加载正常……这是我最初的想法。但是当它部署在运行eclipse(sts)的服务器上时,它工作得很好。”..我没有得到403。这只是当它部署在我的服务器上时,这导致了这个问题..可能是,来自域(您的服务器)的请求被阻止。
@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;
    }
}
someDiv.append($("<img src='"+"proxyImg.htm?url="+results[i].poster+"'></img'"));