簡體   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