3

Spring Data REST を使用して RESTful API を構築しています。これまで、この RESTful サービスの HTML GUI は同じ Tomcat から提供されており、クロス オリジン リクエストに問題はありませんでした。

ここで、別のサーバーから静的ファイルを提供したいと考えています。これは、API が別のドメイン/ポートにあることを意味します。ブラウザは OPTIONS リクエストを送信して、サーバーから Access-Control ヘッダーを取得します。残念ながら、Spring Data REST はこれらの OPTIONS リクエストを処理せず、HTTP 500 を返します。

すべての OPTIONS リクエストを処理するカスタム コントローラーを作成してみました

@Controller
@RequestMapping(value = "/**", method = RequestMethod.OPTIONS)
public class OptionsController {

    @RequestMapping
    public ResponseEntity options() {
        return new ResponseEntity<Void>(HttpStatus.OK);
    }
}

これは OPTIONS では機能しましたが、他のすべてのリクエスト (GET など) は機能しなくなりました。

OPTIONS リクエストは、dispatchOptionsRequest ディスパッチャ サーブレット パラメータを介してオンに切り替えられます。

4

2 に答える 2

0

パラメータdispatchOptionsRequesttrueディスパッチャーに設定して、Optionsメソッド呼び出しを処理し、WebApplicationInitializer.

ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(applicationContext));

dispatcher.setInitParameter("dispatchOptionsRequest", "true");                

dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/*");
于 2015-01-03T21:19:23.770 に答える