2012-07-03 3 views
15

내가 좀 로컬 HTML 파일과 Javascript를이 전 데이터를 가져 오기 위해 사용 된 내 응용 프로그램에서액세스 제어 - 허용 - 원산지 오류 안드로이드에서 4.1

안드로이드 4.1에서 액세스 제어 - 허용 - 원산지 문제가 웹 서비스에서. 안드로이드 4.1을 시도 할 때까지 문제가 없었지만 안드로이드 4.1에서 시도한 후에이 오류가 발생했습니다.

많은 문서를 읽었지만이 문제를 해결할 방법을 찾지 못했습니다.

답변

52

을 당신이 할 필요가

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
    wv.getSettings().setAllowUniversalAccessFromFileURLs(true); 
+2

고마워, 나는 그것을 시도합니다. 그러나 Google API 에뮬레이터에는이 문제가 없습니다. 그것은 흥미 롭습니다. –

+0

그것이 작동해야합니다, 내 애플 리케이션에서 정확히 같은 문제가 있었어요 – slushi

+1

그것은 작동합니다! 탱크를! – mig35

0

웹 서비스가 동일한 도메인에서 호스팅하고 있습니까? 다른 도메인에있는 서비스에 대한 ajax 호출을 작성하는 동안이 오류가 발생했습니다. 당신은 웹 서비스에 대한 제어가있는 경우 , 당신은 액세스 제어 - 허용 - 원산지를 설정할 수 있습니다 : * 을 헤더에 (이 방법은 그렇게하는 안전한 방법은 아니지만.)

+0

사실 그들은 같은 도메인이지만 다른 하위 도메인에 있습니다. 하지만 왜 내가이 오류가 안드로이드 4.1 아니라 이전 버전을 이해할 수 없었다? 무엇이 바뀌 었습니까? –

+0

다른 하위 도메인도 허용되지 않습니다. Chrome은 실제로 "이상한"요청을 처리하고 있었지만 "OPTIONS"요청에 대한 "게시물"요청을 변경하고있었습니다. 오류를 파악하는 데 많은 시간이 걸렸습니다. 동일한 서브 도메인 아래에 서비스 및 클라이언트 코드를 넣을 때 오류가 사라졌습니다. – nilgun

+0

그것은 나를 위해 불가능합니다. 고객이 모바일 장치이기 때문에 :) 도움을 주셔서 감사합니다. –

8

@I 오전 개발자와 같은 문제에 직면 한 다른 사람.

Slushis 솔루션이 정상적으로 작동합니다. 당신은 예를 들어, 컴파일 할 수 있도록,이로드 및 런타임에 메서드를 호출합니다

if (Build.VERSION.SDK_INT >= 16) { 
    Class<?> clazz = webView.getSettings().getClass(); 
    Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class); 
    if (method != null) { 
     method.invoke(webView.getSettings(), true); 
    } 
} 

: 당신이 API11 아래에 대한 지원 시스템을 컴파일 싶은 경우 다음과 같은 추가해야 Android 2.3.3.

+1

좋은 해결책. 아래 SDK 버전 16에서이 속성을 사용하지 않도록 설정할 수있는 옵션이 있습니까? – Karthick

관련 문제