Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Archive for the ‘NodeJS’ Category

CORS in JavaScript – Http Header auslesen

leave a comment »

Bei der Integration von REST oder anderen Servicequellen in JavaScript Anwendungen gibt es ein Problem im Umgang mit den Browser Sicherheitsmechanismen für JS. Nicht dass damit gemeint ist, dass JS unsicher wäre. Nein, im Gegenteil. Die Sicherheitsmechanismen der Browser verhindern den Zugriff auf andere als die angeforderte Quellen. Somit will man das Einschleusen fremder, potenziell sicherheitsgefährdender Inhalte in Webseiten über JavaScript verhindern. Das Problem ist nur, dass Datendienste, die man in seine JS Anwendung integrieren möchte, naturgemäß durch solche „fremden“ Quellen bereitgestellt werden. Es gibt als aus Sicht des Browsers zwei verschiedene Quellen, die angefragt und deren Inhalte über JS Code im Browser zusammegeführt werden sollen. Das ist dem Browser suspekt und die Sicherheitsmechanismen schlagen hier also zu. Das bedeutet, dass der Browser ohne weiteres Zutun eine clientseitige Einbindung solcher Services nicht ermöglicht. Um einen Lösungsweg für diesen Konflikt zu finden, hat man das Konzept des sogenannten „Cros Origin Request“ geschaffen (CORS = Cross Origin Request Support – Detail siehe hier). Das heißt der Service Endpoint muß explizit dem Browser die Verwendung des Server Response in fremden, domainübergreifenden Anwendungen erlauben. Das erfolgt über einen HTTP Response Header Parameter „Access-Control-Allow-Origin“, der die Domänengültigkeit des Service Response festlegt.

Bevor man nun anfängt, einen entsprechenden REST Service in seine JS Anwendung per JQuery o.ä. einzubinden, sollte man vielleicht vorher kurz überprüfen, ob serverseitig CORS unterstützt wird. Dazu schaut man in den HTTP Response Header, ob und wie der Parameter Access-Control-Allow-Origin gesetzt ist. Es reicht nicht, sich über ein Browser Plugin (z.B. Live Headers für Firefox, oder in den Developer Tools für Google Chrome) oder einen curl Aufruf etc. den Header anzuschauen. Browser, die CORS unterstützen, führen einen preflight request aus, um serverseitig zu überprüfen, ob sie den Response domänenfremd verarbeiten dürfen. Man muss sich also den preflight request mit anschauen und den HTTP Header Parameter dort suchen. Wie kommt man nun an den HTTP Header für diese Requestphase ran?

Dazu öffnet man am besten Google Chrome, geht auf die Seite http://api.jquery.com und öffnet mit Ctrl + Shift + I die Developer Tools. Dort wählt man „Console“ aus und ruft darin die gewünschte URL mit der $.get Methode auf, zum Beispiel $.get(„http://www.openligadb.de/api/getmatchdata/EM-2016/2016 „).

Anschließend schaut man in den Developer Tools auf den Network Traffic und sieht sich . Dort steht dann, ob und wie der Server CORS unterstützt. In diesem Falle gibt es serverseitig keine Einwände, die API in anderen Domänen zu verarbeiten.die Header für den Request der Service API an

<DM>

Advertisements

Written by fmtechteam

04/07/2016 at 10:47

Veröffentlicht in Detlef Müller, NodeJS, OracleJET

NodeJS Beispiel für Application Container Cloud Service

leave a comment »

In diesem Blog Post möchte ich ein Beispiel zeigen, wie man eine NodeJS Anwendung auf dem Application Container Cloud Service bereitstellt. Nehmen wir ein einfaches Beispiel für eine Message Board Anwendung, wie sie in der Samples Bibliothek von NetBeans zu finden ist.

Voraussetzungen

  • NetBeans Installation inklusive Google Chrome und NetBeans Plugin zum Debuggen
  • Lokale NodeJS Installation zum Testen
  • Zugang zu einer Oracle Application Container Cloud Instanz (ACCS)

Entwicklung der Demoanwendung

Die NodeJS Anwendung ist ein Message Board, auf dem man Texte posten kann. Diese Anwendung verwendet weitere JS Frameworks, wie Express (serverseitige Webanwendung auf Basis NodeJS), Jade (UI Template Framework), Knockout (Data Binding ins UI) sowie Bower (Paket Manager) und sieht im Browser in etwa so aus.

Im Folgenden wird die Anwendung erst einmal entwickelt.

  • Starte NetBeans und erstelle ein neues Projekt
  • Wähle Kategorie Samples – HTML5/JavaScript – Express/Jade Messages Sample
  • Gib der Anwendung einen Namen (z.B. MessagesExpress) und beende den Wizard
  • Die Anwendung referenziert NodeJS Module, die aber noch in die Anwendung geladen werden müssen. Daher weist NetBeans offene Probleme aus und kennzeichnet das Projekt rot. Löse die Projektfehler durch rechten Mausklick auf das Projekt und wähle Resolve Project Problems
  • Wähle die erste Meldung aus und klicke auf Resolve. Wiederholde den Vorgang für die verbleibende Meldung. Schließe nun das Fenster.
  • Die Anwendung ist nun fertig und kann lokal getestet werden. Klicke mit der rechten Maustaste auf den Projektnamen und dann auf Run
  • Nun sollte sich der Chrome Browser mit der Anwendung öffnen

Bereitstellung der Anwendung in der Cloud

Um die Anwendung in der Cloud bereitzustellen, muss ein Manifest erstellt werden, in dem der Aufruf des Node Kommandos zum Starten der App enthalten ist. Ansonsten weiß der Container nicht, wie er die App starten soll.

  • Klicke mit der rechten Maustaste auf Sources -> New -> JSON File
  • Benenne die Datei manifest.json und klicke auf Finish
  • Ersetze den Inhalt komplett durch

{
"runtime": { "majorVersion": "0.12"},
"command": " node bin/www",
"release": {},
"notes": ""
}

  • Hinweis: Den Startbefehl für die Anwendung („command“) kann man dem Projekt entnehmen. Klicke dazu mit der rechten Maustaste auf den Projektnamen und wähle Properties-> Run
  • Da das Manifest sich im Root Verzeichnis der Anwendung befindet (bzw. befinden muss), wird hier der Eintrag für Start File relativ zum Root Verzeichnis angegeben, also statt D:\MyMobileWork\NonJDevWork\NetBeansApp\MessagesExpress\bin\www
    nur bin\www
  • Jetzt muss man nur noch auf dem Dateisystem das gesamte Projekt Zippen. Beachte dabei, dass das Packen im Root Verzeichnis der App erfolgen muss, sonst kann ACCS das Manifest im Archiv nicht finden.
  • Melde Dich nun an der Oracle Cloud an und begib Dich auf die ACCS Service Console
  • Klicke auf Create Application und Wähle den Typ „Node“ aus
  • Füll das Formular aus und wähle die Option „Upload Application Archive“
  • Wähle das oben gezipte Anwendungsarchiv und klicke auf „Create“. Die Anwendung wird nun hochgeladen und entpackt
  • Nun erfolgt automatisch das Deployment auf der Cloud, das heißt warten, bis dieser Prozess abgeschlossen ist.
  • Nach erfolgreichem Deployment ist die URL der Anwendung oben zu sehen
  • Voilà, die Anwendung steht nun auf der Cloud bereit

<DM>

Written by fmtechteam

20/04/2016 at 16:12