@@ -204,13 +204,33 @@ protected void doGet(HttpServletRequest request, HttpServletResponse responseObj
204204 }
205205
206206 @ Override
207- protected void doOptions (HttpServletRequest request , HttpServletResponse responseObject )
208- throws ServletException , IOException {
209- super .doOptions (request , responseObject );
210- String allowOrigin = optAddAllowOriginHeader (responseObject );
207+ protected void doOptions (HttpServletRequest request , HttpServletResponse response )
208+ throws IOException {
209+ try {
210+ super .doOptions (request , response );
211+ } catch (ServletException |IOException e ) {
212+ DataFormat outputType = ServletUtil .getOutputType (request );
213+ if (outputType == null )
214+ outputType = defaultOutputType ;
215+ ApiVersion api = ApiVersion .CURRENT ;
216+ DataStream es = DataStreamAbstract .create (outputType , true , api );
217+ es .outputProlog ();
218+ ResponseStreamer errorWriter = ResponseStreamer .get (es , api );
219+ int httpCode = Response .error (errorWriter , "INTERNAL_ERROR" ,
220+ e .getMessage (), null , HttpServletResponse .SC_INTERNAL_SERVER_ERROR , e );
221+ response .setStatus (httpCode );
222+ response .setCharacterEncoding (OUTPUT_ENCODING .name ().toLowerCase ());
223+ response .setContentType (outputType .getContentType ());
224+ optAddAllowOriginHeader (response );
225+ Writer out = new OutputStreamWriter (response .getOutputStream (), OUTPUT_ENCODING );
226+ out .write (es .getOutput ());
227+ out .flush ();
228+ return ;
229+ }
230+ String allowOrigin = optAddAllowOriginHeader (response );
211231 if (allowOrigin != null ) {
212- responseObject .addHeader ("Access-Control-Allow-Headers" , request .getHeader ("Access-Control-Request-Headers" ));
213- responseObject .addHeader ("Access-Control-Allow-Methods" , "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS" );
232+ response .addHeader ("Access-Control-Allow-Headers" , request .getHeader ("Access-Control-Request-Headers" ));
233+ response .addHeader ("Access-Control-Allow-Methods" , "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS" );
214234 }
215235 }
216236
0 commit comments