Jeg ved, at dette er et gammelt indlæg... ville bare nævne en sikker måde for nodejs at kommunikere til oracle uden ekstra moduler.
Konfigurer Oracle, så det kan oprette og modtage http-anmodninger. Der er et par måder at gøre dette på:
Det nemmeste er at tænde for epg-gatewayen:
Du kan også opsætte modplsq:
eller Apex-lytteren:
Så lav 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);
});
Uanset hvilken tilgang ... sikre oracle, så det kun vil svare på ip-adressen på nodejs-serveren. Så hvis den kører på localhost:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Bloker også opkald til hver anden pakke og procedure. Der er få måder at gøre dette på, afhængigt af den vej du tager.
Sørg for at gøre dette som minimum:
- opret en hvid liste over elementer, der kan kaldes fra nettet
- kræve, at alle webadresser indeholder skemanavnet, såsom:myuser.myprocedure
- sørg for, at den første del af url'en (op til forespørgselsstien) kun indeholder a-z 0-9
- en rigtig god hvidliste vil tage sig af de fleste af disse elementer
Der har du det...ingen grund til at bekymre dig, hvis et modul går i stykker eller holder op med at fungere med den næste udgivelse.
OG...du kan nemt kommunikere fra Oracle til Node brug:
- apex_web_service.make_rest_request
- utl_http