2015-03-31 120 views
2

我有2個不同的java web項目運行在2個不同的tomcat服務器上。 可以說projA和projB 在這裏,我想從projA加載projB中可用的html。我簡單地使用jQuery.load()來實現這一點。但它給了我沒有'訪問控制 - 允許 - 來源'標題出現在請求的資源錯誤。我也試過在這裏使用jQuery的跨域插件https://github.com/padolsey-archive/jquery.fn/tree/master/cross-domain-ajax如何使用jQuery加載跨域html

但是這並不奏效。 任何幫助將不勝感激。

代碼我試圖

$191('.ontop').load("http://"+host+":8080/OtherDomain/",function(response,status) 
{ 

    if (status == "error") 
    { 
     $191('.ontop').empty(); 
     var msg = "Sorry We could not connect to our server.. Please try again later."; 
     alert(msg); 
    } 
    else 
    { 
     alert(status); 
     $191('.ontop').css('display', 'block'); 
    } 
}); 
+0

您是否試過jsonp請求? – 2015-03-31 05:02:39

+0

基本上我不會調用任何後端API。它只是一個加載HTML位於不同的域。 – mahendrakawde 2015-03-31 05:07:59

+0

其瀏覽器的安全功能。你可以在你的projA上調用一個函數,然後使用CURL或任何其他服務器端方法從那裏調用projB。 – 2015-03-31 05:17:02

回答

0

因此,這裏是我得到的CORS錯誤回答:我加在我的web.xml

<filter> 
     <filter-name>myResponseFilter</filter-name> 
     <filter-class>com.filters.ResponseHeaderFilter</filter-class> 
     <async-supported>true</async-supported> 
    </filter> 


    <filter-mapping> 
     <filter-name>myResponseFilter</filter-name>  
     <url-pattern>*</url-pattern> 
    </filter-mapping> 

以下過濾

再有就是寫入設置頭自定義過濾器:

public void doFilter(ServletRequest request, ServletResponse response, 
      FilterChain filterChain) throws IOException, ServletException { 

     HttpServletRequest httpRequest = (HttpServletRequest) request; 
     HttpServletResponse httpResp = (HttpServletResponse) response;  

     String origin = httpRequest.getHeader("origin"); 
     origin = (origin == null) ? "*" : origin; 

     httpResp.setHeader("Access-Control-Allow-Origin", origin); 
     httpResp.setHeader("Access-Control-Allow-Methods", "GET, POST"); 
     httpResp.setHeader("Access-Control-Allow-Credentials", "true"); 
     httpResp.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type"); 
     httpResp.setHeader("Access-Control-Max-Age", "86400"); 

     filterChain.doFilter(request, response); 
    } 
0

您可能需要使用代理服務器來請求它。

我發現Here並構成本fiddle- http://jsfiddle.net/2kn52u3s/1

代碼snippet-

設置AJAX包頭中

$.ajaxSetup({ 
    scriptCharset: "utf-8", //maybe "ISO-8859-1" 
    contentType: "application/json; charset=utf-8" 
}); 

,然後請求跨域JSON請求原樣

$.getJSON('http://whateverorigin.org/get?url=' + 
    encodeURIComponent('http://google.com') + '&callback=?', 
    function(data) { 
     $("#target").html(data.contents); 
}); 
+0

嗨manoz,我只是嘗試了那個小提琴,在那裏我用我的URL代替了encodeURIComponent('http://google.com'),如下所示 encodeURIComponent('localhost:8080/OtherDomain'),但它不顯示div中的內容 – mahendrakawde 2015-03-31 05:15:16

+0

本地主機不會工作嘗試活域 – 2015-03-31 05:17:56

+0

是的,它可以與活的域名,如facebook 工作但如果我想在本地主機 – mahendrakawde 2015-03-31 05:19:12