プロジェクトは最近、IP ブラック/ホワイト リスト機能を追加しました。IP フィルタリング インターセプターが false を返す場合、フロント エンドはクロスドメインを表示することがわかりました。MVC 構成クラスを変更しようとした後、まだ変更されていないことがわかりました。最後に、インターセプタに判定を追加しました。
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { // ----------- 加上这个就好了 ----------- if (!(handler instanceof HandlerMethod)) { return true; } }
WebMvcConfigurer 設定クラス
@Configuration @RestControllerAdvice public class WebMvcConfig implements WebMvcConfigurer { @Resource private IpFilterInterceptor ipFilterInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // IP拦截器 registry.addInterceptor(ipFilterInterceptor) .addPathPatterns("/**") .order(5); } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedOriginPatterns("*") .allowedMethods("*") .allowedHeaders("*") .maxAge(3600); } }
変更前の IP インターセプタ
@Component public class IpFilterInterceptor implements HandlerInterceptor { /** * 是否启用 */ private boolean enable; /** * 是否为白名单 */ private boolean isWhiteList; /** * 过滤器 */ private List<String> filters; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { // 停用 if (!enable) { return true; } String ip = Servlets.getRemoteAddr(request); // 本机不过滤 if (Const.LOCALHOST_IP_V4.equals(ip)) { return true; } // 过滤 boolean contains = false; for (String filter : filters) { if (Strings.isBlank(filter)) { continue; } // 检测 contains = Utils.checkIpIn(ip, filter); if (contains) { break; } } // 结果 boolean pass; if (isWhiteList) { pass = contains; } else { pass = !contains; } // 返回 if (!pass) { response.setContentType(StandardContentType.APPLICATION_JSON); Servlets.transfer(response, HttpWrapper.of(ResultCode.IP_BAN).toJsonString().getBytes()); } return pass; } }
IP 変更後のインターセプター
@Component public class IpFilterInterceptor implements HandlerInterceptor { /** * 是否启用 */ private boolean enable; /** * 是否为白名单 */ private boolean isWhiteList; /** * 过滤器 */ private List<String> filters; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { // 停用 if (!enable) { return true; } // ----------- 加上这个就好了 ----------- if (!(handler instanceof HandlerMethod)) { return true; } String ip = Servlets.getRemoteAddr(request); // 本机不过滤 if (Const.LOCALHOST_IP_V4.equals(ip)) { return true; } // 过滤 boolean contains = false; for (String filter : filters) { if (Strings.isBlank(filter)) { continue; } // 检测 contains = Utils.checkIpIn(ip, filter); if (contains) { break; } } // 结果 boolean pass; if (isWhiteList) { pass = contains; } else { pass = !contains; } // 返回 if (!pass) { response.setContentType(StandardContentType.APPLICATION_JSON); Servlets.transfer(response, HttpWrapper.of(ResultCode.IP_BAN).toJsonString().getBytes()); } return pass; } }
最後に、問題の原因は、インターセプターが preHandle で、ハンドラーのタイプが HandlerMethod でなければならないことを決定する必要があることです。
以上がSpringBoot インターセプターは false を返し、クロスドメインの問題を解決する方法を示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
