2017-09-26 4 views
0

아래 코드를 사용하여 shopify에서 고객 세부 정보를 얻습니다. shopify 관리자로부터 내 도메인을 다른 도메인으로 리디렉션했습니다.Shopify API 교차 도메인 Ajax 요청

function setEmailWithLoggedInUser(callback) { 
$.ajax({ 
     url: 'https://new-website-shopify.myshopify.com/admin/customers/'+__st.cid+'.json', 
     crossDomain: true, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("Authorization", "Basic XXXXXXXXXXXX") 
     }, success: function(data){ 

      console.log(data); 

      if(callback) 
      callback();  
     } 
}) 

나는 많은 해결책을 찾았지만 해결책을 찾지 못했습니다. 이 오류가 점점 오전 :

Failed to load resource: the server responded with a status of 404 (Not Found)

XMLHttpRequest cannot load https://new-website-shopify.myshopify.com/admin/customers/7094124372.json . Response to preflight request doesn't pass access control check:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://www.beirutshopping.com ' is therefore not allowed access. The response had HTTP status code 404.

+0

* "서버가 404 (찾을 수 없음)"상태로 응답했습니다. *가 근본 문제입니다. 유일한 이유는 * "No 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 있습니다. *"는 대부분의 서버가 4xx에 Access-Control-Allow-Origin 헤더와 같은 헤더를 추가하지 않는다는 것입니다 오류 응답 - 대신 서버는 일반적으로 해당 헤더를 2xx 성공 응답에만 추가합니다. 브라우저 주소창에'https : // new-website-shopify.myshopify.com/admin/customers/7094124372.json' URL (진짜 호스트 이름이 무엇이든)을 붙여 넣으면 어떻게됩니까? – sideshowbarker

+0

브라우저에 실제 호스트 이름이있는 "https://new-website-shopify.myshopify.com/admin/customers/70 94124372.json"을 붙여 넣으면 같은 도메인 이름으로 다시 리디렉션됩니다. api 자격 증명을 입력하고 응답을 올바르게 표시합니다. – user3326941

+0

'https : // new-website-shopify.myshopify.com/admin/customers /'를 제어 하시겠습니까? 구성을 변경할 수 있습니까? 어떤 서버 백엔드가 실행됩니까? 여기서 겪고있는 문제는 https://stackoverflow.com/questions/45557941/401-error-jwt-token-not-found-using-fetch/45559433#45559433의 답변에서 설명한 것과 같습니다. 또한 https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-에서 응답의 CORS 프리 플라이트 * 섹션을 피하는 * 방법을 참조하십시오. resource-whe/43881141 # 43881141이 문제를 해결할 수있는 몇 가지 방법이 있습니다. – sideshowbarker

답변

0

내가이 답변으로 당신에게 두통을 절약 할 수 있습니다. 상점의 프론트 엔드에서/admin을 호출 할 수 없습니다. 그러면 액세스 토큰이 공개됩니다. 대신 프런트 엔드에서 API에 액세스하려면 앱 프록시 패턴을 사용하여 Ajax 호출을 안전하게 작성하여 목표를 달성 할 수 있습니다.

그 자체로, 당신은 거의 확실하게 실패 할 것이며, 당신이 해킹 한 성공은 당신의 가게를 신속하게 공포에 노출시킬 것입니다. 슬픈 팬더로 교체되거나 그렇지 않으면 reckd되는 것과 같습니다.