SpringBootファイルのダウンロードクロスドメインの問題

最初にシーンについて話させてください。

プロジェクトには、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);
    }

}

image.png

 

ローカルで走っても大丈夫です。すべてが順調に進んでいると感じて、とても幸せです。

image.png

 

次に、会社のテストサーバーに公開します

 

 

その後、問題が発生しました。フロントエンドの仲間が私のところに来て、私が書いたバッチダウンロードインターフェイスはクロスドメインであると言いました。

 

いいえ、プロジェクトはすでにグローバルクロスドメイン構成を設定しているのだろうか、なぜこのバッチダウンロードインターフェイスのみがクロスドメインであるのか

image.png

 

長い間理由を探した後、Du Niangも長い間尋ねました。DuNiangの答えのほとんどはコピーされ、コピーされました。基本的に栄養はありません。

結局、どうしようもありませんでした。彼は会社の大物に尋ねました。彼は、それが私がバッチでダウンロードしてグローバルなクロスドメイン構成をクリアしたインターフェースであるかどうかを教えてくれました。

次に、コードを詳しく調べて、最終的に問題の最終的な原因を見つけました

image.png

 

以下に示すように

image.png

上記のコード

response.reset(); //このコードが原因であり、グローバルクロスドメイン構成を含む応答情報の一部をクリアします

したがって、解決策は次のとおりです。(1つ選択してください)

1.次のコードに示すように、response.reset();をコメントアウトします。

image.png

2. Response.reset();コメントなし、構成は次のとおりです

image.png

おすすめ

転載: blog.csdn.net/qq_39999478/article/details/107157324