2016-12-27 67 views
0

我正在開發一個Spring應用程序,並從數據庫中檢索數據並生成一個Json列表並將其發送到一個URL(Rest Web Services)。然後我從get使用getJSON在Javascript中請求。CORS不能在獨立的tomcat中工作

$.getJSON(
    'http://localhost:8080/dataurl?i=1', 
    function(data) { 
    } 

但它正常工作與嵌入式Tomcat服務器,不與獨立的Tomcat server.The的錯誤,我得到的是

,當我在瀏覽器訪問URL,就只返回一個空的JSON數組工作。

爲什麼它不能在獨立的tomcat server.Is它也可以添加oauth2安全嗎?任何幫助表示讚賞。

+0

這是一個AJAX請求。如果需要加載跨源資源(在其他域中進行簡化),請求將是CORS。 Emdedded或獨立的tomcat與CORS無關。在問題中包含錯誤痕跡,以便有人可以分析它們 – pedrofb

+0

存在映射問題。但是現在每次都會返回一個空數組。您是否有任何關於它爲什麼會這樣做的想法? – John

+0

沒有代碼或日誌是不可能說 – pedrofb

回答

1

如果你想啓用CORS,你應該創建過濾器。

@Component 
public class CorsConfig implements Filter { 

private final Logger log = LoggerFactory.getLogger(CorsConfig.class); 

public CorsConfig() { 
    log.info("SimpleCORSFilter init"); 
} 

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 

    response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); 
    response.setHeader("Access-Control-Allow-Credentials", "true"); 
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); 
    response.setHeader("Access-Control-Max-Age", "3600"); 
    response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me, Authorization"); 

    chain.doFilter(req, res); 
} 

@Override 
public void init(FilterConfig filterConfig) { 
} 

@Override 
public void destroy() { 
} 

} 

這將爲CORS添加必要的標題。

+0

我應該在哪裏調用? – John

+0

你不應該,只要你想要的地方添加這個類。 (與所有配置類共享文件夾。保持項目清潔) – yt61

0

問題是使用postgresql maven dependency.When我改變了依賴它的工作。希望它可以幫助任何人