BSP-Seiten als Service - Problem bei HTTP-Request

ABAP Web Dynpro, BusinessServerPages; Erstellung von Webapplikationen.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

BSP-Seiten als Service - Problem bei HTTP-Request

Beitrag von Xilukarim (ForumUser / 58 / 11 / 5 ) »
Es gibt hier leider keine Lösung, siehe stackoverflow.

Hallo BSP-Spezialisten,

ich versuche gerade BSP-Seiten als Datendienst zu verwenden. Ich habe eine BSP-Seite, die beim Aufruf direkt aufgrund von Parametern ein Ergebnis im JSON-Format zurückgibt. (Ich weiss, das es dazu eigentlich auch andere Techniken gibt, aber mir scheint das eine recht einfache Sache zu sein).

Ich rufe den Dienst über einen HTTP-Request auf, nur habe ich das Problem, dass sich die BSP-Seite aus einer HTML-Seite mit Javascript (XMLHttpRequest) nicht aufrufen lässt. Aus einem Excel-Makro heraus funktioniert es, und mit dem Tool "Advanced Rest Client" funktioniert es ebenfalls.

Der funktionierende Excel-Code ist folgender:

Code: Alles auswählen.

  Dim XMLhttp: Set XMLhttp = CreateObject("msxml2.xmlhttp")
  Dim response As String

  Dim strURL As String: strURL = "http://meinSapServer:80XX/sap/bc/bsp/sap/meineBSPSeite"
  
  XMLhttp.Open "GET", strURL, False
  XMLhttp.setRequestHeader "Authorization", "Basic <BASE64-Code für Username:Passwort>"
  XMLhttp.send ""
  response = XMLhttp.responseText
  MsgBox XMLhttp.Status & " " & XMLhttp.statusText
  MsgBox response
In response stehen die gewünschten Daten drin.

Der nicht funktionierende Javascript-Code ist folgender (eingebettet zum Testen in eine lokale Webseite):

Code: Alles auswählen.

	var xmlHttp = new XMLHttpRequest();
	xmlHttp.open( "GET", UrlWieInExcel, false ); 
	xmlHttp.setRequestHeader("Authorization", "Basic " + <BASE64-Code für Username:Passwort>);
	
	try {
		xmlHttp.send( "" ); ##### --> FEHLER! #####
	} catch(err) {
		alert(err);
	}

	return xmlHttp.responseText;

ich bekomme kein Ergebnis, dafür an der markierten Stelle einen geworfenen Fehler "NetworkError: A network error occurred."

Das Javascript habe in verschieden Browsern probiert (Firefox, Chrome und Edge)

Hat vielleicht eine Idee, wo das Problem sein könnte, oder wo mein JavaScript-Code fehlerhaft ist?

VG
Xilukarim
Zuletzt geändert von Xilukarim am 04.09.2019 09:42, insgesamt 1-mal geändert.
ECC 6.07
Netweaver 7.40

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: BSP-Seiten als Service - Problem bei HTTP-Request

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Im GET-Request werden normalerweise keine Daten gesendet. Zudem wird mit einem Event-Handler auf die Antwort reagiert.
Folgender JavaScript-Code sollte kein Fehler werfen:

Code: Alles auswählen.

var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", UrlWieInExcel, false ); 
xmlHttp.setRequestHeader("Authorization", "Basic " + <BASE64-Code für Username:Passwort>);
var response;

xmlHttp.addEventListener('load', function(event) {
   if (xmlHttp.status >= 200 && xmlHttp.status < 300) {
      console.log(xmlHttp.responseText);
      response = xmlHttp.responseText;
   } else {
      console.warn(xmlHttp.statusText, xmlHttp.responseText);
   }
});
xmlHttp.send();

return response;

Die Befehle console.log und console.warn dienen für das Debugging. Im Firefox werden beispielsweise die die Log-Sätze mit einem Rechtsklick "Element untersuchen" sichtbar.

Re: BSP-Seiten als Service - Problem bei HTTP-Request

Beitrag von Xilukarim (ForumUser / 58 / 11 / 5 ) »
Hallo jocoder,

danke für die Antwort, ich bin jetzt etwas weitergekommen. Ich bekomme keinen Fehler mehr, dafür mag der SAP-Server meine Anfrage nicht.

Ich bekomme folgende Konsolenmeldung:
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http:meinServer:80xx/sap/bc/bsp/sap/meineSeite. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).

Ich habe etwas im Internet recherchiert, dass heisst anscheinend, dass der SAP-Server die Anfrage ablehnt, weil die Anfrage von einer Webseite kommt (meine lokale Seite), die er nicht in seiner Liste der erlaubten Seiten aufgelistet hat. Es gibt Requests-header wie z.B. Origin oder Host, die vorgaukeln können, von einer anderen Seite zu kommen, aber diese sind auf meinem SAP-Server nicht erlaubt - Verständlich!

Ich frage mich aber nur, warum aus Excel heraus der Request funktioniert? Die Anfrage von Excel ist ja auch aus einer fremden Quelle.....

EDIT:
Ich wusste nicht, dass CORS ein Sicherheitsmechanismus des Browsers ist, um zu verhindern, dass unerwünschte Seiten(-bestandteile) geladen werden dürfen. Der sendende Server kann andere Server freigeben über die o.g. Liste, damit der Browser weiß, dass er davon nachladen darf. Unser SAP-Server hat aber wahrscheinlich aus Sicherheitsgründen keine Server für einen solchen Prozess freigegeben. Das ist wohl auch der Grund, warum es von Excel funktioniert, weil dort kein CORS-Prozess aktiv ist. Ich habe gelesen, das CORS bei bestimmten Aufrufen unterdrückt werden kann, das werde ich nochmal weiterverfolgen.

Ich bin aber trotzdem dankbar für weitere Vorschläge oder auch eventuell eine Verfeinerung der Erklärung.

VG
Xilukarim
ECC 6.07
Netweaver 7.40

Re: BSP-Seiten als Service - Problem bei HTTP-Request

Beitrag von Xilukarim (ForumUser / 58 / 11 / 5 ) »
ich habe noch mehr Sachen versucht und habe, da es eher kein SAP-Problem ist, bei stackoverflow ein Posting abgesetzt, da könnt ihr auch noch die weiteren Versuche nachlesen.
ECC 6.07
Netweaver 7.40

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1824
Views
HTTP Request
von carlie » 23.08.2019 20:28 • Verfasst in ABAP® für Anfänger
6
Antw.
8917
Views
HTTP Request
von vagans » 20.10.2011 11:11 • Verfasst in ABAP® Core
0
Antw.
1746
Views
ABAP HTTP-Request
von tohe » 05.02.2015 10:38 • Verfasst in ABAP® für Anfänger
0
Antw.
2598
Views
ArchiveLink Fehler bei HTTP Request
von Sascha4SAP » 12.06.2008 17:36 • Verfasst in Basis
0
Antw.
3239
Views

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1515
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8128