Ionic requests는 안드로이드에서만 404를 반환하고 Chrome에서는 정상적으로 동작합니다.
ionic에서 튜토리얼 앱 repo를 복제했습니다.나는 달렸다
ionic start conference sidemenu
그리고 간단한 $105를 추가했습니다.get('myserver') (ngResources에서도 시도했습니다).
크롬에서는 완벽하게 작동했고, 모든 데이터를 다시 얻었지만 각도에서는 null 데이터만 받았고, 어떤 요청도 404 상태를 받았습니다.
주의: 호스트 서버와 로컬 서버에서 시도했습니다.Android에서는 둘 다 실패합니다.서버는 node.js REST API입니다.
콘솔에는 아무것도 인쇄되지 않기 때문에 요청은 서버에도 전달되지 않습니다.
Ionic을 탑재한 Android 앱을 디버깅하는 방법을 경험하신 분이나 가르쳐 주실 수 있습니까?
편집 1: 왜 필요한지는 모르겠지만 여기 있습니다.
$http.get('http://server.com/route').success(function (data) {
//handle success
}).error(function (data, status) {
// handle error
});
여기서 중요한 것은 Cordova 4.0.0에 몇 가지 큰 변화가 있었다는 것입니다.
주요 변경 사항 [...] - 화이트리스트 기능은 플러그인을 통해 제공되고 있습니다(CB-7747). 화이트리스트 기능은 보다 안전하고 설정하기 쉽게 확장되었습니다.Content-Security-Policy 설정은 프레임워크에서 지원됩니다(플러그인 readme 참조).새로운 cordova-plugin-whitelist 플러그인 추가가 필요합니다.레거시 화이트리스트 동작은 아직 다음 사이트를 통해 이용할 수 있습니다.플러그인(권장하지 않음).
그래서 Cordova 화이트리스트 플러그인을 설치했습니다.그리고 덧붙였습니다
<allow-navigation href="http://*/*" />
내 안에서config.xml
파일.
제 경우 문제는cordova-plugin-whitelist
플러그 인.방금 플러그인을 제거하고 추가했습니다.또한 이 코드를 추가하여 모든 요청을 활성화했습니다.<access origin="*" />
에config.xml
. 다음 명령을 확인하십시오.
다음 명령을 사용하여 기존 플러그인을 제거해야 합니다.
ionic cordova plugin rm cordova-plugin-whitelist
다음 명령을 사용하여 추가합니다.
ionic cordova plugin add cordova-plugin-whitelist
도움이 됐으면 좋겠다.
이전 솔루션이 ionic 3에서 작동하지 않는 경우.드디어 @rickie가 3일간의 정신없음을 해결해줘서 고마워!!!이젠 괜찮아에 가다\platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient.java
다음 행에 코멘트를 붙입니다.
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
// Check the against the whitelist and lock out access to the WebView directory
// Changing this will cause problems for your application
/* if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
LOG.w(TAG, "URL blocked by whitelist: " + url);
// Results in a 404.
return new WebResourceResponse("text/plain", "UTF-8", null);
}*/
CordovaResourceApi resourceApi = parentEngine.resourceApi;
Uri origUri = Uri.parse(url);
// Allow plugins to intercept WebView requests.
Uri remappedUri = resourceApi.remapUri(origUri);
if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) {
CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
}
// If we don't need to special-case the request, let the browser load it.
return null;
} catch (IOException e) {
if (!(e instanceof FileNotFoundException)) {
LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
}
// Results in a 404.
return new WebResourceResponse("text/plain", "UTF-8", null);
}
}
cordova 컴파일 시 로컬 콘텐츠는 www 폴더이며 apk 또는 동등한 iOS를 구현하기 위한 자산 및 기타 폴더가 있습니다.
예
<img src="assets/images/{your-file-name}">
언급URL : https://stackoverflow.com/questions/29826971/ionic-requests-return-404-only-on-android-in-chrome-it-works-fine
'programing' 카테고리의 다른 글
React Native에서 JSX 구성 요소를 연결하는 방법 (0) | 2023.03.28 |
---|---|
Rabbit 설정 방법스프링 토끼와의 MQ 연결? (0) | 2023.03.28 |
Simple JSON 및 NumPy 어레이 (0) | 2023.03.28 |
Flask, ajax 호출 성공 상태 코드를 반환하는 방법 (0) | 2023.03.28 |
wp_syslog_event가 실행되지 않습니다. (0) | 2023.03.28 |