AngularJS에서 HTTPS를 사용하려면 어떻게 해야 하나요?
저는 AngularJS를 쓰고 있는데$resource&$http와 함께 작업합니다.apis그러나 보안상의 이유로 HTTPS 요청을 해야 합니다(HTTPS 프로토콜로 작업).
사용방법https비스듬히JS.
도와주셔서 고마워요.
어떤 이유에서인지 Angular는 요청 끝에 미행 /이 없으면 HTTP를 통해 모든 요청을 보냅니다.페이지 자체가 HTTPS를 통해 처리되는 경우에도 마찬가지입니다.
예를 들어 다음과 같습니다.
$http.get('/someUrl').success(successCallback); // Request would go over HTTP even if the page is served via HTTPS
그러나 선행/모든 것을 추가하면 예상대로 작동합니다.
$http.get('/someUrl/').success(successCallback); // This would be sent over HTTPS if the page is served via HTTPS
편집: 이 문제의 근본 원인은 Angular가 서버에서 실제 헤더를 보기 때문입니다.https를 통과하는 http 데이터의 내부 패스가 올바르지 않은 경우에도 http 헤더는 계속 존재하며 마지막에 /를 추가하지 않으면 Angular가 사용됩니다.https를 통해 콘텐츠를 처리하는 NGINX가 있지만 http를 통해 백엔드의 Gunicorn에 요청을 전달하는 경우 이 문제가 발생할 수 있습니다.이를 수정하는 방법은 올바른 헤더를 Gunicorn에 전달하는 것입니다.그러면 프레임워크는 https를 통해 서비스되는 것처럼 보이게 됩니다.NGINX 에서는, 다음의 행으로 이것을 실행할 수 있습니다.
proxy_set_header X-Forwarded-Proto $scheme;
를 사용합니다.$httpapi:
$http.get('/someUrl').success(successCallback);
HTTPS를 통해 애플리케이션을 서비스하는 경우, HTTPS를 통해 동일한 호스트/포트로 거는 모든 콜이 이루어집니다.
요구에 풀 URI 를 사용하는 경우.$http.get('http://foobar.com/somePath')그런 다음 URI를 변경하여https
최근 Angular 1.2.26을 사용했을 때도 비슷한 문제가 발생했지만 로드 밸런서를 통해 상호 작용하는 경우에만 https 관련 헤더를 제거할 수 있습니다.아직 원인을 알 수 없다.나는 다음과 같은 방법을 택했다.
uri = $location.protocol() + "://" + $location.host() + "/someUrl"
비표준 포트를 사용하는 경우에도 $location.port()를 추가할 수 있습니다.
언급URL : https://stackoverflow.com/questions/18839524/how-can-i-use-https-in-angularjs
'programing' 카테고리의 다른 글
| pretty는 .tsx 파일을 포맷하지 않습니다. (0) | 2023.03.26 |
|---|---|
| AssertionError: .accepted_renderer가 django 및 ajax의 응답으로 설정되지 않음 (0) | 2023.03.26 |
| 메타박스에서 WordPress 링크 삽입 대화 상자를 사용하시겠습니까? (0) | 2023.03.26 |
| TypeScript에서 문자열을 숫자로 변환하는 방법 (0) | 2023.03.26 |
| json에서 대괄호를 사용하는 목적은 무엇입니까? (0) | 2023.03.26 |