Cross-domain : cela signifie que le navigateur ne peut pas exécuter de scripts provenant d'autres sites Web. Cela est dû à la politique de même origine du navigateur, qui est une restriction de sécurité imposée par le navigateur sur JavaScript.
Par exemple : la page a souhaite obtenir les ressources de la page B. Si les protocoles, noms de domaine, ports et noms de sous-domaines des pages a et b sont différents, les actions d'accès effectuées sont toutes cross-domaines, et le navigateur
pour Les problèmes de sécurité restreignent généralement l'accès entre domaines, c'est-à-dire que les demandes de ressources entre domaines ne sont pas autorisées. Remarque : les restrictions d'accès entre domaines sont en fait des restrictions de navigateur. Il est très important de comprendre ceci
Politique de même origine : cela signifie que le protocole, le nom de domaine et le port doivent être les mêmes, et toute différence entre eux entraînera un inter-domaine ;
Ajoutez l'annotation @CrossOrigin directement à la méthode ou à la classe Controller Le scénario d'utilisation de SpringMVC utilisant @CrossOrigin nécessite jdk1.8+ Spring4.2+
@GetMapping("/hello") @CrossOrigin public String hello() { return "hello:" + simpleDateFormat.format(new Date()); }
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class ConfigConfiguration { @Bean public CorsFilter CorsFilter() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOriginPattern("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); UrlBasedCorsConfigurationSource ub = new UrlBasedCorsConfigurationSource(); ub.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(ub); } }
@Component public class CustomFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) servletResponse; // 设置允许Cookie res.addHeader("Access-Control-Allow-Credentials", "true"); // 允许http://www.xxx.com域(自行设置,这里只做示例)发起跨域请求 res.addHeader("Access-Control-Allow-Origin", "*"); // 设置允许跨域请求的方法 res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); // 允许跨域请求包含content-type res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN"); if (((HttpServletRequest) servletRequest).getMethod().equals("OPTIONS")) { servletResponse.getWriter().println("ok"); return; } filterChain.doFilter(servletRequest, servletResponse); } }
import org.springframework.stereotype.Component; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Component public class MyWebMvcConfigurer implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 匹配所有的路径 .allowCredentials(true) // 设置允许凭证 .allowedHeaders("*") // 设置请求头 .allowedMethods("GET", "POST", "PUT", "DELETE") // 设置允许的方式 .allowedOriginPatterns("*"); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!