[英]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.