No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
17 Hrs
6 Min
54 Seg

Crear configuración de CORS

8/23
Recursos

Aportes 13

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Muy importante el CORS en Proyectos reales.
Si toca implementar Back, asegúrense de utilizarlos, a veces quien hace los servicios consume o hace pruebas desde Postman o otro programa en Java, ahi no les marcara error de CORS como una aplicación front desde el navegador web, y pueden tener la errorea idea de que están bien y perdiendo tiempo con el otro equipo verificando donde esta el problema.

Errores de CORS --> 100% Back.

Por si algún compañero tiene problemas al aplicar la configuración de cors en la clase SecurityConfig, ya que intellij dice que esta deprecado. Pueden utilizar el siguiente código:

@Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(customizeRequests -> {
                    customizeRequests.anyRequest().authenticated();
                }).csrf(AbstractHttpConfigurer::disable).cors(Customizer.withDefaults())
                .httpBasic(Customizer.withDefaults());
        return http.build();
    }

CORS
=Cross-Origin Resource Sharing
=Uso compartido de recursos entre orígenes

Hola compañeros, tengo unas ganas de hacer una implemetación de front end al proyecto asi que les traigo un HTML (index.html) y Js (main.js) para los que tambien tienen ganas de hacer eso y ir probando el proyecto puedan hacerlo ❤️

HTML (index.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pizza</title>
</head>
<body>
    <div id="pizzas"></div>  
    <script src="main.js"></script>
</body>
</html>

JavaScript (main.js)

const urlAPI = "";
const APIKey = "XXXXXXXXXXXXXXXXXXXX";

async function pizzasGET () {
    const response = await fetch(urlAPI,
        {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': APIKey,
            },
        });
    const datos = await response.json();

    console.log(datos);
    const pizzaContent = document.getElementById("pizzas");
    pizzaContent.textContent = JSON.stringify(datos);
}

pizzasGET();
```js @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf(AbstractHttpConfigurer::disable) .cors(Customizer.withDefaults()) .authorizeHttpRequests(customizeRequests -> { customizeRequests .anyRequest() .authenticated(); }) .httpBasic(Customizer.withDefaults()); return http.build(); } } ```

Aqui les dejo el html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pizza</title>
</head>
<body>
  <code id="pizzas">

  </code>
    <script>
      const pizzaContent=document.getElementById("pizzas")
const url=""
const auth="Basic dXNlcjozM2EzNGM4Ny0yMzZmLTQ1YzUtYWU4NC1mZGY3MmJhZWY3NzY="
fetch(url, {
  "headers": {
    "Authorization": auth
  }})
    .then(response => response.json())
    .then(result => {
      console.log(result)
      pizzaContent.textContent = JSON.stringify(result);
    });
    </script>
</body>
</html>
Código funcionando sin problemas de metodos deprecados y con cors funcionando ```java package com.auth.Center.web.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.web.SecurityFilterChain; //indica que la clase puede contener métodos de bean. Un método de bean es un método que Spring ejecuta para registrar // un objeto en su contenedor de inversión de control (IoC @Configuration //Agrega varias características de seguridad, como la protección CSRF, la autenticación y la autorización. @EnableWebSecurity public class SecurityConfig { // indica que el método que sigue debe ser ejecutado por Spring para registrar un bean en su contenedor IoC @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http //desactivando la protección CSRF (Cross-Site Request Forgery) // es una característica de seguridad que ayuda a prevenir ciertos tipos de ataques, pero en algunos casos, puedes querer desactivarla .csrf(AbstractHttpConfigurer::disable) //habilitando la configuración de CORS (Cross-Origin Resource Sharing) .cors(Customizer.withDefaults()) //indicando que todas las solicitudes HTTP deben estar autenticadas .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) //habilitando la autenticación básica HTTP .httpBasic(Customizer.withDefaults()); // construyendo la configuración de seguridad y devolviéndola return http.build(); } } ```

normalmente yo solo aqui aplicada lo de los CORS XD:

@CrossOrigin(origins = { “*” })
@RestController
@RequestMapping("/api")
public class ClientRestController {

ahora ya se que lo puedo hacer mas profesional jajaj xd

estoy usando java 17 y spring 3.2.5 y spring security 6.2.4 logre que me funcionara asi @Bean *public SecurityFilterChain* filterChain(HttpSecurity http) *throws* Exception{ http.cors(cors -> cors.configurationSource(corsConfigurationSource())).authorizeHttpRequests(authorize -> authorize .anyRequest().authenticated()).csrf((csrf) -> csrf.ignoringRequestMatchers("/api/\*")).httpBasic(*withDefaults*()); *return* http.build(); } @Bean *public CorsConfigurationSource* corsConfigurationSource() { CorsConfiguration config = *new* CorsConfiguration().applyPermitDefaultValues(); config.setAllowedMethods(Arrays.*asList*("GET", "POST", "PUT", "DELETE", "PATCH")); config.setAllowCredentials(*false*); config.setAllowedHeaders(Arrays.*asList*("Authorization", "Cache-Control", "Content-Type", "X-Frame-Options")); UrlBasedCorsConfigurationSource source = *new* UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/\*\*", config); *return* source; }
```java @Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration config = new CorsConfiguration().applyPermitDefaultValues(); config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "PATCH")); config.setAllowCredentials(false); config.setAllowedHeaders(Arrays.asList("Authorization", "Cache-Control", "Content-Type", "X-Frame-Options")); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/\*\*", config); return source; } ```
CORS Cross-Origin Resource Sharing: Es un mecanismo para integrar aplicaciones. Define una forma para que las aplicaciones web cliente que se cargan en un dominio interactúen con recursos en un dominio diferente.
@Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf(AbstractHttpConfigurer::disable) .cors(Customizer.*withDefaults*()) .authorizeHttpRequests(customizeRequests -> { customizeRequests .anyRequest() .authenticated(); }) .httpBasic(Customizer.*withDefaults*()); return http.build(); } }
@CrossOrigin en el controlador se usa en algun proyecto real, es viable para la arquitectura del sistema ?