Jag vet att detta är ett gammalt inlägg... ville bara nämna ett säkert sätt för nodejs att kommunicera med oracle utan extra moduler.
Konfigurera Oracle så att det kan skapa och ta emot http-förfrågningar. Det finns några sätt att göra detta:
Det enklaste är att slå på epg-gatewayen:
Du kan också ställa in modplsq:
eller Apex-lyssnaren:
Gör sedan en standard http.get:
i node jshttp.get("http://localhost/accessor/myschema.my_procedure?x=1&y=2", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Oavsett vilket tillvägagångssätt...säkra oracle så att det bara svarar på ip-adressen för nodejs-servern. Så om den körs på localhost:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Blockera även anrop till alla andra paket och procedurer. Det finns få sätt att göra detta beroende på vilken väg du tar.
Se till att du gör detta åtminstone:
- skapa en vit lista över objekt som kan anropas från webben
- kräver att alla webbadresser innehåller schemanamnet som:myuser.myprocedur
- se till att den första delen av webbadressen (upp till sökvägen) endast innehåller a-z 0-9
- en bra vit lista kommer att ta hand om de flesta av dessa objekt
Där har du det...du behöver inte oroa dig om en modul går sönder eller slutar fungera med nästa version.
OCH...du kan enkelt kommunicera från Oracle till Node:
- apex_web_service.make_rest_request
- utl_http