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 ディスパッチャ サーブレット パラメータを介してオンに切り替えられます。