2017-06-05 12 views
2

現在、私は2番の春からoauth2へのログインを試みています。角2、Oauth2、CORSエラー:いいえ 'アクセス制御が許可された原点'

私の角度で[ログイン]をクリックしたときに、私はこのエラーを取得:

は、XMLHttpRequestのはhttp://localhost:8080/REM/oauth/tokenをロードすることはできません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://localhost:3000'は許可されません。

角度

login(username: string, password: string) { 
let headers = new Headers(); 
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'); 
headers.append('Accept', 'application/json'); 

let options = new RequestOptions({ headers: headers }); 

let params = new URLSearchParams(); 
params.append('grant_type', "password"); 
params.append('client_id', "client"); 
params.append('client_secret', "secret"); 
params.append('username', "user"); 
params.append('password', "pass");        

return this.http.post(this.urlLogin, params.toString(), options).map(this.extractData);} 

CORS

<mvc:cors> 
    <mvc:mapping path="/**" allowed-origins="http://localhost:3000, *" 
     allowed-methods="POST, GET, PUT, DELETE" 
     allowed-headers="X-Requested-With, Content-Type, X-Codingpedia,Authorization, Accept, Origin" 
     allow-credentials="false" max-age="3600" /> 
</mvc:cors> 

は親切で、完全なサーバー構成を見つける:それは春ブーツ にあなたがそれを見ると、いくつかを作ることができますhttps://github.com/robbyrahmana/Config

+0

は、簡単に言えば実装し、サーバーの設定が正しく設定されていません。そうだった場合、エラーは表示されません。サーバのCORSロジックが正しく設定されていることを確認し、サーバを再起動してください。 – Lansana

+0

こんにちは@lansana、 oauth/tokenを送信しようとしたときにcorsが動作しません。通常の要求の場合は、サーバーからすべてのユーザーを取得するなど、OKを実行します。 –

+0

2つのハンドラとの違いは何ですか? 1つが動作し、1つが動作しない場合は、何も見つからないことはありませんか? – Lansana

答えて

0

Iユーザー差異

@Component 

@Order(Ordered.HIGHEST_PRECEDENCE)

パブリッククラスSimpleCORSFilterフィルター{

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

@Override 
public void doFilter(ServletRequest req, ServletResponse resp, 
        FilterChain chain) throws IOException, ServletException { 
    HttpServletResponse response = (HttpServletResponse) resp; 
    HttpServletRequest request = (HttpServletRequest) req; 
    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setHeader("Access-Control-Allow-Methods", "PATCH,POST,GET,OPTIONS,DELETE"); 
    response.setHeader("Access-Control-Max-Age", "3600"); 
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN"); 

    if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { 
     response.setStatus(HttpServletResponse.SC_OK); 
    } else { 
     chain.doFilter(req, resp); 
    } 

} 

@Override 
public void destroy() { 
} 

}

関連する問題