こんにちは!私はSpring Bootの初心者です。私は、Rest Controllerを使用するシンプルなJava Spring Boot Applicationを持っています。コントローラのエンドポイントの中には、CORS要求にさらされているものがあります。私はメソッドの上に@CrossOrigin(origins = "..")注釈を追加することによってCORSリクエストを許可することが可能であることを発見しました。 私の問題は、現時点ですべての起源がわからず、後でSpringブートアプリケーションの実行時にそれらのいくつかを追加する必要があるということです。 Rest Rest Controllerのいくつかのエンドポイントに新しい原点アドレスを手動で追加する方法はありますか?例えば。残りのエンドポイントに特定のユーザー(たとえば、管理者)が新しいcors-originを追加できるようにするRest End Controllerにエンドポイントを設定するはいの場合:簡単な例を挙げてください。 実行時にRest ControllerにCORSマッピングを動的に追加する
答えて
これは独自のorg.springframework.web.cors.CorsProcessor
を実装することで可能と思います。 org.springframework.web.filter.CorsFilter
の実装をご覧ください。これはCorsProcessor
というカスタムで設定することができ、方法はpublic void setCorsProcessor(CorsProcessor processor)
です。
私はあなた自身のCorsProcessor
を実装し、カスタムルールprocessRequest
を処理することを提案します。
また、別のオプションとして、Spring Security Configに自分のCorsConfigurationSource
を設定することもできます。例えば @Override protected void configure(HttpSecurity http) throws Exception { http.cors().configurationSource(new CustomConfigSource()); }
CorsConfigurationSource
には、特定のCORS処理を処理できる方法CorsConfiguration getCorsConfiguration(HttpServletRequest request);
があります。
答えをありがとう。残念ながら私は少し混乱しています。どこで自分のCorsProcessorを置くべきですか?getCorsConfiguration(HttpServletRequest req)メソッドをどのように呼び出す必要がありますか?私はRest ControllerのどこにでもHttpServletRequest型のパラメータを持っていません。 ...ご覧のとおり、私は本当の初心者です – McRaven
私が提供する2番目のオプションを取ることをお勧めします。あなたのSpring Security Configのあなたのcors設定に独自の 'ConfigurationSource'を追加してください。フレームワークは各リクエストに対してメソッド 'getCorsConfiguration(HttpServletRequest request);を呼び出します。 – mrkernelpanic
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.addHeader("Access-Control-Allow-Origin", "*");
if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
LOG.trace("Sending Header....");
// CORS "pre-flight" request
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "1");
}
filterChain.doFilter(request, response);
}
このリンクは質問に答えるかもしれませんが、ここで答えの重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](/レビュー/低品質の投稿/ 18160032) – Kenster
- 1. 実行時に動的プロパティを動的に追加する
- 2. 実行時に動的にグリッドビューに行を追加する
- 3. 実行時にTableLayoutPanelに動的にコントロールを追加する
- 4. 実行時に動的にJPanelにコンポーネントを追加する
- 5. 実行時にSpringBootに動的にjarを追加します。
- 6. 実行時に.csファイルからasp .netフォームにコントロールを追加する
- 7. 実行時に画像を動的に追加 - Unity 5
- 8. 動的に実行時に新しいメソッドとプロパティを追加
- 9. 実行時にnHibernateマッピングを追加しますか?
- 10. 実行時に(動的に)オブジェクトの特別なプロパティにEditorAttributeを追加する
- 11. 実行時にXamarin.Formsで入力フィールドを動的に追加する方法
- 12. 実行時にRubyハッシュに動的変数を追加する方法
- 13. WPFで実行時にテキストボックスコントロールを動的に追加する方法#
- 14. 実行時にテーブルに行を追加
- 15. 実行時にサーブレットを動的に作成、登録、マッピングする方法
- 16. Celerybeatは、実行時に動的にタスクを追加/削除できますか?
- 17. 実行時にスプリングコンテキスト設定を動的に追加しますか?
- 18. PageMenu View Controllerを動的に(プログラム的に)追加する方法は?
- 19. Springマルチテナント:ユーザー追加時にMultiTenantConnectionProviderにデータソースを動的に追加
- 20. 実行時にファイルをアプリケーションに追加
- 21. データ行を動的に追加する
- 22. は、実行時に動的
- 23. 実行時にコントロールを追加すると動作しない
- 24. .csで特定の時間にjavascriptを実行するには?
- 25. 実行時に増加する動的フォームを作成
- 26. 移行/状態変更時に自動的にラベルを追加
- 27. 実行時にストリップメニューに追加
- 28. AdvancedDataGridに動的に行を追加
- 29. リピータフィールドに行を自動的に追加
- 30. 実行時に動的にテキストボックスにアクセス
は、あなたがこの横断的関心事を外部化するためにフィルタを使用して考えたことはありますか?フィルターを使用してください –