source

파일과 함께 로컬로 로드된 모바일 WebView에서 CORS cookie 자격 정보://

lovecheck 2023. 2. 17. 21:38
반응형

파일과 함께 로컬로 로드된 모바일 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: trueheader 응답은 무시되고 웹 콘텐츠에서 사용할 수 없게 됩니다.

할 경우 는 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-Credentialsheader), 즉, ("")", "에 .Access-Control-Allow-Origins 리 and 。Access-Control-Allow-Methods의도된 요청의 패스를 포함해야 합니다.

를 들어, CORS를 있는 , CORS를 만들고 있는 경우 등입니다.POSThttp://foo-domain.com 포함somevalue로로 합니다.http://bar-domain.comOPTIONS가 「」로 .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 %x6Corigin-list-or-null말 그대로null 16진수 부호화)

으로 '은 '아까보다'와 라는 질문을 될 것입니다.*ACCESS-CONTROL-ALLOW-ORIGIN로로 합니다.nullfile://유효한가(즉, 모든 하이브리드 앱이 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

반응형