已攔截跨源請求:同源策略禁止讀取位於 http*****的遠程資源。(緣由:CORS 頭缺乏 'Access-Control-Allow-Origin')。
CORS通常不須要在瀏覽器配置,瀏覽器發現此次跨源AJAX請求是簡單請求,就自動在頭信息之中,添加一個Origin字段,Origin字段用來講明,本次請求來自哪一個源(協議 + 域名 + 端口)。 服務器根據這個值,決定是否贊成此次請求,也就是說服務器會存在一份白名單,說明哪一些源是能夠被容許的,而Access-Control-Allow-Origin就是包含在迴應頭裏的白名單。 瀏覽器發現,這個迴應的頭信息沒有包含Access-Control-Allow-Origin字段,就知道出錯了,從而拋出一個錯誤,也就是你遇到的提示,是返回結果被瀏覽器攔截了,而不是請求發不出。 因此你須要的是在服務器上配置這個白名單,而不是更改頁面
@Configuration public class WebConfiguration extends WebMvcConfigurerAdapter { /** * 跨域配置 * * @param registry 註冊器 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedHeaders("*").allowedOrigins("*"); } }
@Configuration public class MyConfiguration { @Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("http://domain1.com"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); bean.setOrder(0); return bean; } }
項目採用了Spring Security,則還須要加如下配置spring
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http //容許跨域 .cors().and() ... } }
參考:跨域