2012-01-11 218 views
0

我在尋找類似的幫助:如何從外部網站獲取cookie?

我有我設置Cookie的網站A.

在這同一個瀏覽器打開Ø網站B和我試圖從B網站連接到一個網站使用代碼:

String responseSession = "";

 try { 

    URL url = new URL(urlSCS + "session"); 
    InputStream response = url.openStream(); 
    BufferedReader reader = new BufferedReader(new 
    InputStreamReader(response, "UTF-8")); 


    for(String line; (line = reader.readLine()) != null;){ 
    responseSession += line; 
    } 

    }catch(Exception e){ 
    e.printStackTrace(); 
    } 

    return responseSession; 

從網站A.得到的Cookie

問題是,當我用Cookie打開網站A時,Cookie顯示正確,但是當我試圖通過網站B獲取cookie時,我收到錯誤消息:

SEVERE: Servlet.service() for servlet appServlet threw exception 
java.lang.NullPointerException 
    at com.esb.scs.SessionController.session(SessionController.java:81) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:680) 
+0

另一件事是 - 不要一直重複發佈相同的問題。這是現在的三倍。至少關閉你的舊問題。你弄得一團糟。 – 2012-01-11 14:35:12

回答

3

Cookie不能在這樣的網站上共享。

當您設置Cookie時,它是您的瀏覽器和網站A之間的合同。當您的瀏覽器連接到網站B時,它無法訪問網站A的Cookie,因爲該Cookie位於您的瀏覽器中。您無法將此cookie傳輸到網站B,以便它可以在網站A上使用它。這是出於安全原因而完成的,無法解決。

要將信息從網站A傳輸到網站B,您應該使用從網站A到網站B的表單POST操作,並對您在該信息中需要的數據進行編碼。然後,網站B可以從POST操作中讀取此信息,而不是嘗試從網站A上的cookie中獲取該信息。

+0

我需要獲取Cookie因爲我想創建類似單點登錄模塊的東西。我無法獲得會話,我試圖通過使用Cookie來驗證用戶身份。 – Ilkar 2012-01-11 13:52:41

+0

您必須將POST操作中的用戶身份驗證信息從網站A傳遞到網站B,然後進行身份驗證。 – 2012-01-11 14:32:45