2017-05-18 1 views
1

JavaScript에서 정말 끔찍한 일이지만 필자는 며칠 동안이 문제로 어려움을 겪었습니다.fetch()는 항상 "type : 'opaque'"가됩니다. 하지만 내 끝점에서 Postman을 성공적으로 사용할 수 있습니다.

짧은 이야기를하기 위해 UPS의 REST API로 작업하려고합니다. 나는 우편 배달부와 함께 할 수 있으며 아무런 문제없이 PowerShell로 할 수 있습니다. 자바 스크립트는 완전히 다른 이야기이며 나는 어디에도 가지 않습니다.

저는 XMLHttpRequest와 fetch()를 시도해 보았습니다. 나는 여러 가지 조합을 시도해 보았습니다. 모두 나열 할 수는 없습니다.

다음은 웹 앱에서 JS 기능입니다 (필드 변경시 트리거 됨). JS 함수는 푸른 함수를 호출 (. 애저 기능이 우체부에서 파워 쉘에서 작동)

function getUpsShipTime() { 
    var jsonBody = { 
     "DeliveryDate": "2017-06-06", 
     "ShippingCode": "GND", 
     "ShipFrom": { 
      "Address": { 
       "StateProvinceCode": "CA", 
       "CountryCode": "US", 
       "PostalCode": "90210" 
      }, 
     }, 
     "ShipTo": { 
      "Address": { 
       "StateProvinceCode": "FL", 
       "CountryCode": "US", 
       "PostalCode": "32830" 
      } 
     } 
    } 

    var uri = "https://MyAzureFunction.azurewebsites.net/api/HttpTriggerPowerShell1?code=MyAuthCode==" 

    var req = new Request(uri, { 
     method: 'post', 
     mode: 'no-cors', 
     headers: { 
      'Content-type': 'application/json' 
     }, 
     body: JSON.stringify(jsonBody) 
    }); 
    fetch(req) 
     .then(function (response) { 
      console.log(response); 
      return response.blob(); 
     }).then(function (blob) { 
      console.log(blob); 
     }); 
} 

함수가 나는 다음과 같은 얻을 실행합니다 :

여기

result of fetch() against my REST endpoint

무엇을의 I 우체부에서 얻을 : 내가 잘못 뭐하는 거지

REST call result from Postman

?

답변

3

URL을 no-cors 모드로 요청합니다.이 때문에 불투명 한 응답이 반환됩니다. 사실 그것이 당신이 요구 한 것입니다.

대신 COR30을 Azure Function으로 구성하여 here으로 지정하고 모드를 cors으로 변경하는 것이 좋습니다.

+0

우체부와 함께 왜 이렇게 쉽게 작동하는지 설명해 주시겠습니까? 이 작업을 수행하는 더 쉬운 방법이 있거나 fetch() 및 XMLHttpRequest 만 사용할 수 있습니까? 그럼에도 불구하고, 나는이 CORS를 작동 시키려고 노력할 것이다. 작동한다면 작동합니다. – Chris76786777

+0

이것은 효과가 있습니다. 이 일에 너무 많은 시간을 보냈다는 것을 믿을 수 없습니다. 응. – Chris76786777

+1

우편 배달부는 웹 브라우저가 아닙니다. – Mardoxx