2017-02-16 8 views
0

をCORSヘッダを追加していない私はHttpResponseにCORSヘッダを追加することになっているシンプルなjavax.filter.Filter実装があります。`javax.filter.Filter`が正しく

log.debug("Headers before adding: {}", response.getHeaderNames()); 
    log.debug("Adding CORS headers to {}", response.getClass().getName()); 
    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"); 
    log.debug("Headers after adding: {}", response.getHeaderNames()); 

をしかし、時にはヘッダがで終わるません

DEBUG Headers before adding: [Cache-Control] 
DEBUG Adding CORS headers to org.apache.catalina.connector.ResponseFacade 
DEBUG Headers after adding: [Cache-Control] 

、時には彼らは:

DEBUG Headers before adding: [] 
DEBUG Adding CORS headers to org.apache.catalina.connector.ResponseFacade 
DEBUG Headers after adding: [Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers] 
(受信側とログのこのビットの両方による)応答

私は間違っていますか?

答えて

0

ヘッダーを設定する前にchain.doFilter(req, res)を呼び出すと、Tomcat/Jettyは応答の書き込みを開始し、それ以上ヘッダーを追加できないという問題がありました。残念ながら、どちらのサーバーも、エラーメッセージまたは例外を示すものではありません。

解決方法:電話する前に必ずヘッダーを設定してください。chain.doFilter(req, res)