繁体   English   中英

部署到服务器时,图像获取403被禁止

[英]Image getting 403 forbidden when deployed to server

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

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

问题:当在STS内置服务器上运行并在本地访问时,这非常正常。

http://localhost:8080/myWebPage.whatever

我有一个安装了Tomcat 7的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服务器盒子上的配置问题吗?

不,完全没有,您的服务器配置与外部资源可访问性无关,如果您要获得@._V1._SY317_CR5,0,214,317_.jpg 403 (Forbidden) - 这显然意味着服务器拒绝您的请求。

似乎有很多人对IMDB有这样的问题 - 看到这个

我已经“成功”,它不是问题的直接解决方案,而是一种解决方法。 在我的服务器上使用本地代理我将图像下载到内存中,然后返回到网页...

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'"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM