2016-06-28 28 views
3

私はlocalhost:3002で動作するフロントエンドを角で書いています。 私は、localhost:8080上で動作するSpring-bootで書かれたバックエンドを持っています。JSESSIONIDクッキーが保存されていません

私は(私がSOに発見し、自分のニーズに適応)CORSを処理するためのフィルタを追加しました:

@Component 
public class CORSFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "http://localhost:3002"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Credentials", "true"); 
     response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); 
     chain.doFilter(request, response); 
    } 

    public void destroy() {} 
} 

私が認証する場合、私は、サーバーがクッキーを送信していることがわかります。

enter image description here

このCookieは、次のリクエストでは送信されません。これが401の応答につながる:

enter image description here

私はクロームコンソールの「リソース」パネルを見て、クッキーが保存されていなかったことが分かりました。

アイデア?あなたは$httpProviderを設定ファイルで

答えて

2

、あなたはクロスサイトリクエストに資格情報を送信したい指定するには、この行を追加します。

$httpProvider.defaults.withCredentials = true; 

通常、AngularJSは自動的same-のために(リクエストにこれらのクッキーを送信しますあなたのリクエストはクロスサイトであるため、手動で設定する必要があります。

関連する問題