programing

각도 GET 요청 오류(safari iOS에서만)

oldcodes 2023. 4. 4. 22:15
반응형

각도 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에서 오류 인수를 기록하면 다음과 같은 응답이 나타납니다.

오류 응답 0?

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.orgAPI)의 .yourDomain.org그럼 프로덕션에서는 전혀 문제가 발생하지 않습니다.

한편 API를 다른 도메인에서 호스트해야 할 경우 Safari를 "꼼수"로 만드는 방법을 찾아야 합니다.이것 좀 봐.

그리고 이것은:

이게 도움이 됐으면 좋겠어요.

언급URL : https://stackoverflow.com/questions/26587400/angular-get-request-error-but-only-on-safari-ios

반응형