각도 GET 요청 오류(safari iOS에서만)
WordPress를 백엔드로 사용하여 웹 사이트를 구축하고 있으며 Angular는프런트 엔드로 JS를 사용합니다.WordPress JSON API를 사용하여 데이터를 프런트 엔드로 가져옵니다.
https://wordpress.org/plugins/json-api/
문제
Angular를 사용하고 있습니다.JS는 WordPress JSON API에서 데이터를 가져옵니다.이하의 서비스를 작성했습니다.
this.getPage = function ( slug ) {
return $http.get('wordpress/api/get_page/?slug=' + slug)
}
컨트롤러에서 이 서비스를 사용하여 다음과 같은 현재 페이지를 가져옵니다.
HTTPService.getPage('home')
.success(function ( data ) {
$scope.page = data.page;
console.log(arguments);
})
.error( function () {
console.log(arguments);
})
iOS의 Safari를 제외한 모든 브라우저에서 정상적으로 작동합니다.iOS의 Safari에서 오류 인수를 기록하면 다음과 같은 응답이 나타납니다.
iPhone을 Mac에 연결했을 때의 사파리 디버거입니다.내가 받은 에러 응답은 에러 코드 0 입니다.
내가 지금까지 시도한 것
세팅했습니다.Access-Control-Allow-Origin "*"
에서.htaccess
파일이 안 먹히는데요.요청은 상대 URL과 같은 도메인에서 이루어지기 때문에 문제가 없다고 생각합니다.
Safari(iOS)에서 이 기능이 작동하지 않는 이유를 아는 사람이 있습니까?
편집
요청하신 추가 정보:
기본적으로 "서드파티 쿠키 및 기타 웹 사이트 데이터"를 차단하는 정책을 가진 브라우저는 Safari뿐이기 때문일 것입니다.사실 이 문제는 Safari iOS에서만 발생하는 것이 아니라 OSX의 Safari에서도 발생합니다.MacBook에서 이 문제가 발생하지 않는 것은 언젠가 "프라이버시"의 기본 설정을 변경했기 때문일 것입니다.
이 옵션을 사용하여 Safari를 열고 "기본 설정"으로 이동한 후 "가격" 탭에서 "쿠키 및 기타 웹 사이트 데이터 차단" 옵션이 "제3자 및 광고주로부터"로 설정되어 있는지 확인합니다.이것은 최신 버전의 Safari에서 처음이자 기본 옵션입니다.
MacBook에서는 다음과 같이 표시됩니다.
iOS에서는 다음과 같이 표시됩니다.
이것이 실제로 문제의 원인임을 확인하기 위해 이 설정을 "Never"로 변경하고 캐시를 클리어한 후 다시 문제를 재현해 보십시오.저는 당신이 그것을 재현할 수 없을 것이라고 확신합니다.
이제 다시 "쿠키 및 기타 웹 사이트 데이터 차단:서드파티 및 광고주로부터"라는 메시지를 받고 먼저 캐시를 클리어하면 (iOS 또는 OSX에서) 다시 문제가 발생합니다.이것이 문제의 원인임을 확인한 후, 이 설정을 「서드 파티 및 광고주로부터」로 되돌리면, 디폴트 설정의 문제를 재현해 해결할 수 있습니다.
이 문제를 다시 테스트할 때마다 Safary 캐시를 클리어하는 것이 좋습니다.그렇지 않으면 Safari가 API를 제공하는 사이트를 신뢰할 수 있다고 판단하여 문제를 재현할 수 없게 될 수 있습니다.따라서 만약을 위해 테스트 시마다 캐시를 지웁니다.
이 문제의 근원은 Safari가 메인 페이지가 콘텐츠를 로드하기 전에 사용자가 서드파티 콘텐츠 서비스를 제공하는 페이지와 직접 대화하고 있는지 확인하는 데 있다고 생각합니다.
최적의 솔루션을 제안하려면 귀사의 프로젝트에 대해 자세히 알아야 합니다.예를 들어 최종 앱은 API와 동일한 도메인에 통합됩니까?만약 그렇다면 생산 현장에 갈 때 그런 문제가 있어서는 안 되기 때문입니다.과 같습니다.http://whatever.yourDomain.org
API)의 .yourDomain.org
그럼 프로덕션에서는 전혀 문제가 발생하지 않습니다.
한편 API를 다른 도메인에서 호스트해야 할 경우 Safari를 "꼼수"로 만드는 방법을 찾아야 합니다.이것 좀 봐.
그리고 이것은:
이게 도움이 됐으면 좋겠어요.
언급URL : https://stackoverflow.com/questions/26587400/angular-get-request-error-but-only-on-safari-ios
'programing' 카테고리의 다른 글
컨트롤러가 모듈 내에 있는 경우 AngularJs $scope가 정의되지 않았습니다. (0) | 2023.04.04 |
---|---|
JSON 문자열을 JSON 개체 c#으로 변환 (0) | 2023.04.04 |
비동기/대기 구문에서 거부하려면 어떻게 해야 합니까? (0) | 2023.04.04 |
React를 사용하여 여러 페이지 앱을 구축하는 방법 (0) | 2023.04.04 |
Spring Boot의 application.yml 내에서 롤링 파일어펜더를 설정하는 방법 (0) | 2023.04.04 |