파일과 함께 로컬로 로드된 모바일 WebView에서 CORS cookie 자격 정보://
잠깐만, 이건 좀 설명이 필요해.
저는 하이브리드 모바일 웹 앱 구축을 돕고 있습니다.주요 코드베이스는 HTML5와 JavaScript로 네이티브 모바일 웹뷰(Phonegap)로 포장됩니다.
이 기능 중 일부는 앱이 당사 고객 중 한 명이 관리하는 웹 서비스에 정보를 게시해야 합니다.이 웹 서비스는 다른 사람이 사용하고 있기 때문에 변경할 여지가 거의 없습니다.HTTP POST(JSON)의 JSON(일본어판/영어판).JSESSIONID가 있습니다. 번째 " " " 에"가 표시됩니다.initSession()
(AJAX) JSESSIONID가 있습니다.
웹웹은 웹 합니다.file:///path/to/app/index.html
.
에 대해 "Setting"을 설정해 이었습니다.Access-Control-Allow-Origin: *
CORS를 사용하다 후했습니다.
$.ajax({
url: 'http://thirdparty.com/ws',
data: data,
type: "POST",
dataType: "JSON",
success: successCallback,
error: failedCallback
});
요청을 모니터링한 결과 쿠키가 포함되지 않은 것이 분명했습니다.자세히 살펴보면 CORS 사양에는 세션쿠키를 포함한 사용자 credential을 취급하는 특별한 섹션이 있습니다.그래서 AJAX 콜을 다음과 같이 수정했습니다.
$.ajax({
url: 'http://thirdparty.com/ws',
data: data,
type: "POST",
dataType: "JSON",
success: successCallback,
error: failedCallback,
xhrFields { withCredentials: true }
});
이번에는 브라우저에서 또 다른 오류가 발생했습니다.판독치가 많을수록 다음과 같은 결과가 나왔습니다.
가 ""로
Access-Control-Allow-Credentials: true
header 응답은 무시되고 웹 콘텐츠에서 사용할 수 없게 됩니다.할 경우 는 credential URL에서 .
Access-Control-Allow-Origin
와일드카딩은 사용할 수 없습니다.
하여 """를 포함해야 .Access-Control-Allow-Credentials: true
★★★★★★★★★★★★★★★★★」Access-Control-Allow-Origin
를 참조해 주세요.
드디어 제 문제에 도달했습니다.파일:// protocol을 사용하여 웹 페이지를 로드할 때Origin
는, 「」로 됩니다.null
수 에서는 에 수 Access-Control-Allow-Origin
, 가 「」를 설정할 수 Access-Control-Allow-Origin
*
쿠키를 포함한 자격 증명을 보낼 수 없습니다.
그래서 난 갇혔어.무엇을 해야 하나?여기 비슷한 질문이 올라오는데, 제안된 답변을 잘 모르겠어요.어떤 도움이라도 주시면 감사하겠습니다!
이 질문이 오래됐다는 건 알지만, 어쨌든 그 질문을 던져야겠다고 생각했어요.CORS 요청의 경우 브라우저는 해당 요청을 프리플라이트합니다. 뜻입니까 $.ajax()
있는 , 「」의 「」의 「」의 「」,OPTIONS
서버에 요구가 송신됩니다.
은?OPTIONS
'은'요청'을 입니다.
"여보세요, 다른 도메인에서 온 외부 서버입니다. 단순하지 않은 요청을 보내고 싶습니다(단순한 요구는 사전에 전송되지 않습니다).저의 간단한 요청은 이런 종류의 헤더와 콘텐츠 유형 등을 가질 것입니다.괜찮으시다면 말씀해 주시겠습니까?
그 후, 서버는 어떠한 조작을 실시해(아마도 일부의 설정이나 데이타베이스의 체크), 허가된 송신원, 허가된 헤더, 허가된 메서드로 응답합니다.
- 그 OPTIONS
했습니다.$.ajax()
사용방법 - 종료됩니다.
CORS는 JSONP와 동일하지 않습니다.
것은 - - ★★★★★★★★★★★★★★★★★★★★★★★★★★★★」withCredentials
전 에는 응답이 .Access-Control-Allow-Credentials
header), 즉, ("")", "에 .Access-Control-Allow-Origins
리 and 。Access-Control-Allow-Methods
의도된 요청의 패스를 포함해야 합니다.
를 들어, CORS를 있는 , CORS를 만들고 있는 경우 등입니다.POST
http://foo-domain.com
포함somevalue
로로 합니다.http://bar-domain.com
OPTIONS
가 「」로 .http://bar-domain.com
, . . . . . . . .OPTIONS
은 "접속"을 합니다.Access-Control-Allow-Origins
「」를한 값http://foo-domain.com
. 이것은 원래 이름 자체일 수 있습니다.*
. 응답에는 또한 다음과 같은 정보가 필요합니다.Access-Control-Allow-Methods
「」를한 값POST
도 이 also also 수 있습니다.*
그리고 마지막으로 우리가 원하는 것은somevalue
하려면 , 에 「」, 「」가 되어 있을 가 있습니다.Access-Control-Allow-Headers
의 「」를한 값somevalue
또는 header key 입니다.*
.
되돌리려면 - 서버를 제어할 수 없거나 서버가 CORS 요청을 허용할 방법이 없는 경우 항상 JSONP 또는 일부 urlEncoded 데이터 유형을 사용하거나 사용자 지정 머리글 없이 간단한 요청을 수행할 수 있습니다. GET
,HEAD
및 full , " "POST
요청은 보통 단순한 요청입니다.
하이브리드 어플리케이션을 만들고 있다면 코르도바를 사용하고 있을 것입니다.이 경우 CORS가 필요 없습니다.접근할 도메인을 화이트리스트에 표시하기만 하면 됩니다.
http://docs.phonegap.com/en/3.0.0/guide_appdev_whitelist_index.md.html
있습니다.ACCESS-CONTROL-ALLOW-ORIGIN
로로 합니다.null
네, 이 질문이 좀 거슬리네요.
CORS 사양에 대해서null
는, 「CORS」로부터의할 수 .file://
에 의한 변경
이 사양에 대한 권장사항은 공백으로 구분된 오리진 목록 또는 단순히 "null"(참고로 문자열) 중 하나로 설정하는 것입니다.%x6E %x75 %x6C %x6C
의 origin-list-or-null
말 그대로null
16진수 부호화)
으로 '은 '아까보다'와 라는 질문을 될 것입니다.*
을 ACCESS-CONTROL-ALLOW-ORIGIN
로로 합니다.null
file://
유효한가(즉, 모든 하이브리드 앱이 uri에 대해 알고 있는 경우 엔드포인트에 액세스할 수 있음)?
그럼 ,, 면, 면, 면, 면, 면, 면.Access-Control-Allow-Credentials: true
서버에서는 인증 메커니즘이 모두 동작하고 있다고 생각합니다.는 올바른 auth를 하지 않고 .
도움이 되었으면 좋겠다
www.5app.co.uk 를 참조해 주세요.XHR 콜을 완전히 사용하지 않고 데이터 접속이 오갈 때 모바일에서 안정적으로 동작합니다.그런 다음 게이트웨이는 클라이언트와 통신합니다.
JsonP 요청을 사용합니다.JsonP 요청을 통해 교차 도메인 요청을 수행할 수 있습니다.여기 예가 있습니다.
예를 들어 php 측에서는 다음과 같이 설정해야 합니다.
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, Set-Cookie, Cookie, Bearer');
header('Access-Control-Allow-Credentials: true');
// header('Cookie: PHPSESSID='.$_COOKIE['PHPSESSID']);
언급URL : https://stackoverflow.com/questions/9103876/cors-cookie-credentials-from-mobile-webview-loaded-locally-with-file
'source' 카테고리의 다른 글
리액트 훅 내의 오브젝트 배열에서 상태 'onChange'를 업데이트하려면 어떻게 해야 합니까? (0) | 2023.02.18 |
---|---|
JSON 스키마의 "필수"와 "옵션"의 차이점은 무엇입니까? (0) | 2023.02.17 |
JSON을 사용한 시리얼화된 필드의 순서.그물 (0) | 2023.02.17 |
Typescript-Interface/Type-definition을 스터브하는 방법 (0) | 2023.02.17 |
올바른 URL을 전달하려면 어떻게 해야 합니까?추가 앰퍼 및 문제 없이 JQuery 메서드에 대한 조치? (0) | 2023.02.17 |