最初にシーンについて話させてください。
プロジェクトには、1つを実現し、複数のファイルを1つの.zip圧縮ファイルにダウンロードするという要件があります。
次のコードに示すように、コードが記述され、グローバルクロスドメイン設定も構成されます。
@Configuration
public class SimpleCORSFilter {
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
/*是否允许请求带有验证信息*/
corsConfiguration.setAllowCredentials(true);
/*允许访问的客户端域名*/
corsConfiguration.addAllowedOrigin("*");
/*允许服务端访问的客户端请求头*/
corsConfiguration.addAllowedHeader("*");
/*允许访问的方法名,GET POST等*/
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
}
ローカルで走っても大丈夫です。すべてが順調に進んでいると感じて、とても幸せです。
次に、会社のテストサーバーに公開します
その後、問題が発生しました。フロントエンドの仲間が私のところに来て、私が書いたバッチダウンロードインターフェイスはクロスドメインであると言いました。
いいえ、プロジェクトはすでにグローバルクロスドメイン構成を設定しているのだろうか、なぜこのバッチダウンロードインターフェイスのみがクロスドメインであるのか
長い間理由を探した後、Du Niangも長い間尋ねました。DuNiangの答えのほとんどはコピーされ、コピーされました。基本的に栄養はありません。
結局、どうしようもありませんでした。彼は会社の大物に尋ねました。彼は、それが私がバッチでダウンロードしてグローバルなクロスドメイン構成をクリアしたインターフェースであるかどうかを教えてくれました。
次に、コードを詳しく調べて、最終的に問題の最終的な原因を見つけました
以下に示すように
上記のコード
response.reset(); //このコードが原因であり、グローバルクロスドメイン構成を含む応答情報の一部をクリアします
したがって、解決策は次のとおりです。(1つ選択してください)
1.次のコードに示すように、response.reset();をコメントアウトします。
2. Response.reset();コメントなし、構成は次のとおりです