23 Aralık 2019 Pazartesi

SpringMVC @CrossOrigin Anostayonu

Giriş
Şu satırı dahil ederiz.
import org.springframework.web.bind.annotation.CrossOrigin;
Sınıf veya Metod Üzerinde Kullanılır
Açıklaması şöyle
This annotation is used both at the class and method levels to enable cross-origin requests. In many cases, the host that serves JavaScript will be different from the host that serves the data. In such a case, Cross-Origin Resource Sharing (CORS) enables cross-domain communication. To enable this communication, you just need to add the @CrossOrigin  annotation.

By default, the @CrossOrigin annotation allows all origin, all headers, the HTTP methods specified in the @RequestMapping annotation, and a maxAge of 30 min. You can customize the behavior by specifying the corresponding attribute values.
Şu hataları alıyorsak bu anotasyonu sınıf veya metoda ekleriz.
Cross Origin Resource Blocked: The Same Origin Policy disallows reading the remote resource at http://ipAddress:port/shutdown. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://ipAddress:port/shutdown. (Reason: CORS request did not succeed).
Tüm Uygulama İçin
Eğer sadece Spring MVC kullanıyorsak ve tüm uygulama için global ayar yapmak istersek
- WebMvcConfigurerAdapter veya
- RepositoryRestConfigurerAdapter - (Deprecated kullanmayın)
sınıfılarının addCorsMappings metodunu override etmek gerekir.

Eğer SpringSecurity kullanıyorsak
- CorsConfigurer kullanılır

maxAge Alanı
Örnek
Şöyle yaparız
@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping("/api/login")
public class RestLoginController {...}
origins alanı
İstemci olabilecek adresleri belirtir.

Örnek
Şöyle yaparız
@Controller
@EnableAutoConfiguration
public class HelloController {

  @CrossOrigin(origins = "http://localhost:9000")
  @RequestMapping("/hello")
  @ResponseBody
  public String sayHello() {
    return "Hello World Developer!!!";
  }
}
Örnek
Şöyle yaparız
@RestController
@RequestMapping("api/drawing-releases")
@CrossOrigin("*")
public class DrawingReleaseRestController {
  ...
}

Hiç yorum yok:

Yorum Gönder