Я не могу получить ответ от сервера в ReactJS (SOAP).Я пытался использовать и выборку и XMLHttpRequest - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь интегрировать API FedEx в ReactJS или, точнее, в Приложение NextJS. До сих пор я пытался использовать fetch и XMLHttpRequest. Ниже приведен код, который я пытался использовать XHR:

let XHR = new XMLHttpRequest();
        XHR.open('POST', 'https://wsbeta.fedex.com:443/web-services', true);
        let soapData = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v8="http://fedex.com/ws/vacs/v8">' +
        '<soapenv:Header/>' +
        '<soapenv:Body>' +
          '<v8:ServiceAvailabilityRequest>' +
            '<v8:WebAuthenticationDetail>' +
              '<v8:ParentCredential>' +
                '<v8:Key>XXXXX</v8:Key>' +
                '<v8:Password> XXXX</v8:Password>' +
              '</v8:ParentCredential>' +
              '<v8:UserCredential>' +
                '<v8:Key> XXXXX</v8:Key>' +
                '<v8:Password> XXXXX</v8:Password>' +
              '</v8:UserCredential>' +
            '</v8:WebAuthenticationDetail>' +
            '<v8:ClientDetail>' +
              '<v8:AccountNumber> XXXX </v8:AccountNumber>' +
              '<v8:MeterNumber> XXXXX</v8:MeterNumber>' +
              '<v8:Localization>' +
                '<v8:LanguageCode>EN</v8:LanguageCode>' +
                '<v8:LocaleCode>US</v8:LocaleCode>' +
              '</v8:Localization>' +
            '</v8:ClientDetail>' +
            '<v8:TransactionDetail>' +
              '<v8:CustomerTransactionId>Services Avaibility</v8:CustomerTransactionId>' +
            '</v8:TransactionDetail>' +
              '<v8:Version>' +
                '<v8:ServiceId>vacs</v8:ServiceId>' +
                '<v8:Major>8</v8:Major>' +
                '<v8:Intermediate>0</v8:Intermediate>' +
                '<v8:Minor>0</v8:Minor>' +
              '</v8:Version>' +
              '<v8:Origin>' +
                '<v8:PostalCode>400061</v8:PostalCode>' +
                '<v8:CountryCode>IN</v8:CountryCode>' +
              '</v8:Origin>' +
              '<v8:Destination>' +
                '<v8:PostalCode>560055</v8:PostalCode>' +
                '<v8:CountryCode>IN</v8:CountryCode>' +
              '</v8:Destination>' +
              '<v8:ShipDate>2019-05-21</v8:ShipDate>' + 
              '<v8:CarrierCode>FDXE</v8:CarrierCode>' +
            '</v8:ServiceAvailabilityRequest>' +
          '</soapenv:Body>' +
        '</soapenv:Envelope>';

      XHR.setRequestHeader('Content-Type', 'text/xml');
      XHR.setRequestHeader('Access-Control-Allow-origin', '*')
      XHR.onreadystatechange = function() {
        if(XHR.readyState == 4) {
          if(XHR.status == 200) {
            console.log(soapData)
          }
        }
      }


      XHR.send(soapData)

Я получаю другую ошибку HTTP, например, (405, 501, 400). Наряду с этим я получаю ошибку CORS, которая выглядит следующим образом:

Доступ к XMLHttpRequest в 'https://wsbeta.fedex.com/web-services' из источника' http://localhost:3000' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: у него нет HTTP нормальное состояние.

Для CORS я пробовал режимы cors в запросе на выборку, а с XHR я установил заголовок Access-Control-Allow-Origin как *, но я все еще получаю ту же ошибку.

Я также установил расширение из интернет-магазина Chrome, которое вчера решило проблему с CORS, но сегодня я снова столкнулся с тем же. Я уже пытался удалить и переустановить расширение.

Я также попытался добавить

Буду признателен за любую помощь.

...