這裏是我的webConfigCORS不工作的我的春天啓動應用程序
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
我有一個/health
端點,它返回一些健康數據,並能正常工作。
這裏是JUnit測試
@Test
public void corsTest() {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.ORIGIN, "http://localhost:9000");
HttpEntity<?> requestEntity = new HttpEntity(headers);
ResponseEntity<Status> entity = this.restTemplate.exchange("/health", HttpMethod.GET, requestEntity, Status.class);
assertEquals(HttpStatus.OK, entity.getStatusCode());
assertEquals("http://localhost:9000", entity.getHeaders().getAccessControlAllowOrigin()); //6
Status health = entity.getBody();
assertThat(health.getAppName()).isEqualTo(appName);
}
測試失敗在行,如果註釋出該行,測試通過6.。 通過調試器,我發現entity.getHeaders().getAccessControlAllowOrigin()
爲空。我用這個sample app作爲參考,它工作正常。但對於我的應用程序而言,它失敗
當我使用JavaScript調用/健康api時,我可以看到cors的作品。如果我註釋掉webConfig類,我會在javascript中出錯。在javascript中調試更多時,表明未設置cors響應頭,但啓用webconfig時請求已成功完成。
所以絕對cors作品。這是失敗的測試。所以我猜測測試沒有看到它,因爲我不知道的原因。
CORS只適用於AJAX請求,所以編寫模擬JAVA客戶端的測試很奇怪。 – zeroflagL
@zeroflagL:我感覺一樣。但我上面給出的鏈接已經用java編寫了測試。所以我試圖效仿它 –