Как исправить проблему с SOAPUI Soap Mock и метод Http Options не поддерживается в приложении Angular 7 - PullRequest
0 голосов
/ 12 апреля 2019

Я сменил сервис SOAP в SoapUI. В этом сервисе есть несколько разных методов. для этой фиктивной службы я определил ответ мыла, и все в приложении SoapUI работает.

Я хочу использовать этот сервис в приложении Angular 7. Я уже импортировал пакет ngx-soap и использую его в своем классе обслуживания.

import { Injectable } from '@angular/core';
import { NgxSoapService, Client, ISoapMethodResponse} from 'ngx-soap';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class snExampleService{    
    message: string;
    xmlResponse: string;
    jsonResponse: string;
    exampleClient: Client;

    constructor(private soap: NgxSoapService, private http: HttpClient) {
      this.soap.createClient('http://localhost:8080/mocksexampleBinding?WSDL')
          .then(client => {
                setTimeout(()=>{

             client.setEndpoint('http://localhost:8080/mocksexampleBinding');
             this.exampleClient = client;
             console.log('Client', client) },2000);                            
          })
          .catch(err => console.log('Error', err));

    }

    snExampleCall(snExampleRequest):Observable<ISoapMethodResponse> {
        return this.exampleClient.call('methodName',snExampleRequest);
    }
}  

Метод snExampleCall вызывается из другого компонента, в который внедряется эта служба.

Проблема возникает в браузере (Chrome). Когда я вызываю этот метод в консоли, появляется эта ошибка:

OPTIONS http://localhost:8088/mocksexampleBinding 500 (Internal Server Error)
Access to XMLHttpRequest at 'http://localhost:8088/mockssexampleBinding' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to the preflight request doesn't pass access control check: It does not have HTTP ok status.

И если я посмотрю в сетевом трафике на эту ошибку, чтобы в предварительном «Метод HTTP, не поддерживаемый сервером: ОПЦИИ»

В приложении SoapUI в настройках скрипта OnRequest я определил следующее:

mockRequest.httpResponse.addHeader( 'Access-Control-Allow-Origin', '*' )
mockRequest.httpResponse.addHeader( 'Access-Control-Allow-Headers', 'SOAPAction,Content-Type' )
mockRequest.httpResponse.addHeader( 'Access-Control-Allow-Methods', 'POST, GET, PUT, OPTIONS, DELETE' )

Но проблема все еще возникает. Я уже пытался запустить Chrome без включенного CORS, и в этом случае все работает нормально. Поэтому я думаю, что это должна быть проблема CORS, которую можно решить в настройках SoapUI или путем добавления некоторых заголовков к вызову SOAP в Angular.

Кто-нибудь может помочь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...