prosource

Ionic + Angular - POST 요청 후 "404 Not Found (캐시로부터)"를 피하는 방법

probook 2023. 2. 16. 21:50
반응형

Ionic + Angular - POST 요청 후 "404 Not Found (캐시로부터)"를 피하는 방법

이 질문은 이전 질문의 일부를 가리키고 있습니다.Ionic + Angular POST 요청 반환 상태 404

하지만 나는 효과적인 해결책을 찾을 수 없었다.

문제는 다음과 같습니다.

디바이스에서 실행 중인 모바일 앱에서 요청을 하면 항상 404라는 응답이 나옵니다.

Request Method:POST
Status Code:404 Not Found (from cache)
Request Headersview source
Accept:application/json, text/plain, */*
Content-Type:text/plain
Origin:file://
User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36
Request Payloadview source
{,…}

그러나 Chrome 브라우저의 Postman 플러그인을 사용하여 데스크톱에서 동일한 요청을 시도하면 필요한 데이터가 포함된 응답 200이 항상 표시됩니다.

Angular http method에 의한 문제인 줄 알았는데, 이전 투고에서 그렇지 않다는 것을 알게 되었습니다.

어떻게 하면 피할 수 있을까요?요청 시 또는 서버측(PHP)에서 헤더를 앱의 HTML로 설정해야 합니까?

조언해 주셔서 감사합니다.

편집:

다음과 같이 cache:false도 설정해 보았습니다.

$http({
                method : 'POST',
                url : $scope.remoteUrl,
                data: postData,
                headers: headersData,
                cache: false,
                timeout: 10000
                // success response
            })

하지만 운이 없었지.

많은 사람들이 그것을 경험하고 있다.

저도 같은 문제에 부딪혔어요.새로운 버전의 Cordova의 새로운 보안 정책과 관련이 있는 것 같습니다.

해결 방법은 다음과 같습니다.

Cordova의 화이트리스트 플러그인을 설치했습니다.

cordova plugin add cordova-plugin-whitelist

그런 다음 콘텐츠 정책을index.html메타 태그(사용자 자신의 호스트 또는 모든 요청을 수락하기 위한 '*' 사용):

<meta http-equiv="Content-Security-Policy" content="default-src 'self' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *;script-src 'self' localhost:35729 'unsafe-eval' 'unsafe-inline';">

default-src일반적인 요구에 사용됩니다.ws://localhost:35729호스트는 에서 라이브 세션에 사용됩니다.ionic serve.

script-src안전한 스크립트 실행에 사용됩니다.

unsafe-inline그리고.unsafe-eval각도가 제대로 작동하기 위해 필요합니다.

data: gap: https://ssl.gstatic.comiOS에서만 사용됩니다.

self의 현재 호스트를 의미합니다.index.html파일.

요청이 작동하려면 자신의 요청을 추가해야 합니다.표준이 아닌 경우 프로토콜과 포트를 추가하는 것을 잊지 마십시오.

원하지 않는 경우 메타 태그를 건너뛸 수 있지만 화이트리스트 플러그인에서 많은 경고가 표시됩니다.

플러그인의 readme에서 이를 구성하는 방법에 대한 자세한 내용은 다음과 같습니다.

그런 다음 앱을 다시 빌드하면 다시 작동합니다.

같은 문제가 발생했지만 아무것도 해결되지 않아 화이트리스트 플러그인을 삭제했습니다.

cordova plugin remove cordova-plugin-whitelist

다시 설치했다.

cordova plugin add cordova-plugin-whitelist

그리고 효과가 있었다

저도 같은 문제가 있어서 다음 플러그인을 추가하여 해결할 수 있었습니다.

ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git

오랜 시간이 흐른 후, 저는 효과가 있는 솔루션을 찾았습니다. 바로 실행입니다.cordova plugin add cordova-plugin-whitelist

제 경우 config.xml과 index.html을 origin으로 이미 설정해 두었습니다.

제 안드로이드 디바이스의 Firebase 사인도 비슷한 문제가 있었지만, 브라우저에서 로그인할 수 있었습니다.

cordova plugin remove cordova-plugin-whitelist
cordova plugin add cordova-plugin-whitelist

위의 행을 사용하여 문제를 해결.

언급URL : https://stackoverflow.com/questions/30161952/ionic-angular-how-to-avoid-the-404-not-found-from-cache-after-post-reque

반응형