[SPRING] 봄 부팅과 '액세스 제어 - 허용 - 원산지'
SPRING봄 부팅과 '액세스 제어 - 허용 - 원산지'
나는 MySQL 데이터베이스를 호출 포트 8080에 노출 된 고정 표시기 컨테이너에서 실행되는 간단한 스프링 부팅 서비스가있다.
내가 localhost를 공격 할 때 : "크리스토퍼 볼튼", "제목": "테스트 제목 1", "내용", "날짜" "이것은 일부 콘텐츠입니다": 8080 / 블로그, 나는 [{ "저자는"돌아 "2017 -08-29 "}]
내가 브라우저에서 직접 공격 할 때 잘 노력하고 있습니다. 내가 jQuery를에서 그것을 시도 할 때, 나는 정상적인 액세스 제어 - 허용 - 원산지를 얻고있다.
여기 내 스프링 부팅 서비스입니다 :
@SpringBootApplication
@RestController
public class ChrisboltonServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ChrisboltonServiceApplication.class, args);
}
@Autowired
private JdbcTemplate jdbcTemplate;
@CrossOrigin
@RequestMapping(path="/blogs")
public @ResponseBody Iterable<ChrisBolton> getAllUsers() {
List<ChrisBolton> result = jdbcTemplate.query(
"SELECT * FROM blog",
(rs, rowNum) -> new ChrisBolton(rs.getString("author"),
rs.getString("title"),
rs.getString("content"),
rs.getDate("date"))
);
return result;
}
}
여기 내 jQuery를이다 :
$.ajax({
url: "http://localhost:8080/blogs",
crossDomain: true
}).done(function(data) {
console.log(data);
});
하지만 난 여전히이 오류를 얻고있다 :
XMLHttpRequest cannot load http://localhost:8080/blogs. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
나는 getAllUsers () 메서드에 @CrossOrigin를 추가하여이 시도하고 난 클래스 수준에 노력했다. 내가 포트 3000에 내 UI를 실행하고 있기 때문에 나는이 살펴 보았다하지만 링크는 특정 봄되지 않습니다.
편집하다
내 요청 헤더를 추가 :
GET /blogs HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: */*
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113
Safari/537.36
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
네트워크 탭의 응답 (크롬) :
[{ "저자": "크리스토퍼 볼튼", "제목": "시험 제목 1", "내용": "2017년 8월 29일", "날짜" "이것은 일부 콘텐츠입니다"}]
내가 다시 네트워크 탭에서 데이터를 얻고 같은 것 같습니다. 하지만, 내을 console.log (데이터) 액세스 제어 - 허용 - 원산지는 생산
해결법
-
==============================
1.응용 프로그램이 추가보십시오 :
응용 프로그램이 추가보십시오 :
@SpringBootApplication @RestController public class ChrisboltonServiceApplication { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*"); } }; } ...
은 $ 아약스에서 진정한 () : 또한, 교차 도메인을 제거하려고합니다.
-
==============================
2.당신은 @CrossOrigin ( "HTTP를 : // 로컬 호스트 : 8080") 추가 할 수있는 적절한 방법을 원하는 경우 : 8080이 요청을 허용 할 수 있습니다. 그것은 하나의 엔드 포인트 / 컨트롤러에 대한 간단한 설정입니다. 나중에 물론 사용자 정의 너무 거기에 변수를 사용할 수 있습니다.
당신은 @CrossOrigin ( "HTTP를 : // 로컬 호스트 : 8080") 추가 할 수있는 적절한 방법을 원하는 경우 : 8080이 요청을 허용 할 수 있습니다. 그것은 하나의 엔드 포인트 / 컨트롤러에 대한 간단한 설정입니다. 나중에 물론 사용자 정의 너무 거기에 변수를 사용할 수 있습니다.
from https://stackoverflow.com/questions/46065156/access-control-allow-origin-with-spring-boot by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅 응용 프로그램은 단지 6 개 요청 왜 받아? (0) | 2019.10.18 |
---|---|
[SPRING] 스프링 배치를 사용하여 HDFS에서 파일 읽기 (0) | 2019.10.18 |
[SPRING] 봄 데이터 시려면 성능 대 저장 (0) | 2019.10.18 |
[SPRING] 봄 GeneratedValue 주석 사용 (0) | 2019.10.18 |
[SPRING] 봄의 데이터를 MongoRepository와 쿼리 주석을 사용하는 동안 쿼리를 표시하는 방법 (0) | 2019.10.18 |