2013-04-21 78 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'")); 
相關問題