일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- pem인증
- 서평
- 스마트에디터 0바이트
- 중복삽입
- 가브리엘 웰즈
- 그리스로마 신화
- @RestController
- 전자정부프레임워크
- 토드 로즈
- 순간의 힘
- 평균의종말
- 함수포함
- 제임스 클리어
- 심리학으로 읽는 그리스 신화
- 토드로즈
- 미시적동기
- 태양의 신
- Unix 타임스탬프
- 죽음1
- 칩히스 댄히스
- 개개인성
- mysql
- 날씨API
- 아주 작은 습관의 힘
- 성공
- 오기 오가스
- 보안성검토
- 자바
- 독서
- 트렌젝션분기
Archives
- Today
- Total
삽질 하자! 파는만큼 보인다
[cors]https 운영서버에서 http api 연동하기(https 지원안하는 api) 본문
문제 상황
날씨 api를 연동해서 JSON 데이터를 받아 ajax로 데이터를 가져왔을때 로컬에서는 문제가 없었으나
SSL이 적용된 https 프로토콜 환경에서는 api 연동이 안되는 문제가 발생하였다.
jsp페이지에서 AJAX로 통신할때 날씨 api http를 사용할때 접근이 안되었다.
시도
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
메타태그를 추가했으나 http -> https로 강제로 적용시켜주지만 해당 api는 https 환경을 지원하지않는 문제가있어 실패.
해결방안
다음문제를 해결하기위해 AJAX로 구현했던부분을
자바단에서 처리해보자라는 생각으로 코드작성
public static JSONObject getWeather() throws Exception{
JSONObject jsonObject = new JSONObject();
try {
URL url = new URL("api주소입력");
// HttpURLConnection을 통한 연결 설정
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 응답 코드 확인
int responseCode = connection.getResponseCode();
// 응답 내용 읽기
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
JSONParser jsonParser = new JSONParser();
jsonObject = (JSONObject) jsonParser.parse(response.toString());
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return jsonObject;
}
위와 같이 api 통신을 하여 반환값을 JSONObject 형태에 담아서 날씨데이터를 전달하는 함수를 생성하였다.
@CrossOrigin(origins = "*" )
@RequestMapping(value="url")
추가적으로 해당 함수를 호출하는 RequestMapping에
@CrossOrigin을 이용해 CORS 오류 방지 처리를 해주었다.
'technology' 카테고리의 다른 글
[ssh] pem으로 SSH/FTP 접속방법 (0) | 2023.12.12 |
---|