我最初实现了一个控制器来处理OPTIONS请求,并将CORS所需的头应用于响应。最近我一直在清理代码并为CORS创建了拦截器。部分清理将是删除OPTIONS请求的控制器方法。
但是,我的mockmvc测试需要OPTIONS处理方法,而当我实际运行app时,拦截器链处理OPTIONS请求,即使OPTIONS请求没有控制器方法。
我希望像这样的测试
MockHttpServletRequestBuilder optionsRequest = options("the-url");
this.mockMvc.perform(optionsRequest).
andExpect(status().isOk()).
andExpect(header().string("Access-Control-Allow-Origin", "*")).
andExpect(header().string("Access-Control-Allow-Methods", "OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT")).
andExpect(header().string("Access-Control-Allow-Headers", "content-type"));
如果我的测试设置有,则传递
StandaloneMockMvcBuilder builder = MockMvcBuilders.standaloneSetup(this.controller);
builder = builder.dispatchOptions(true);
builder = builder.addInterceptors(new CorsInterceptor());
或者我希望我不会看到正在运行的应用程序上的交叉来源请求。