Vím, že toto je starý příspěvek... jen jsem chtěl zmínit jistý způsob, jak mohou nodejs komunikovat s oraclem bez dalších modulů.
Nastavte oracle tak, aby mohl vytvářet a přijímat požadavky http. Existuje několik způsobů, jak to udělat:
Nejjednodušší je zapnout bránu epg:
Můžete také nastavit modplsq:
nebo posluchač Apex:
Poté v node js proveďte standardní http.get:
http.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);
});
Ať je to jakýkoli přístup...zabezpečte oracle tak, aby odpovídal pouze na IP adresu serveru nodejs. Pokud tedy běží na localhost:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Blokujte také volání každého dalšího balíčku a procedury. Existuje několik způsobů, jak to udělat, v závislosti na cestě, kterou se vydáte.
Ujistěte se, že to děláte minimálně:
- vytvořte bílý seznam položek, které lze volat z webu
- vyžadovat, aby všechny adresy URL obsahovaly název schématu, například:myuser.myprocedure
- ujistěte se, že první část adresy URL (až po cestu dotazu) obsahuje pouze a-z 0-9
- o většinu těchto položek se postará opravdu dobrý bílý seznam
Tady to máte...nemusíte se bát, jestli se modul s příští verzí rozbije nebo přestane fungovat.
A...můžete snadno komunikovat z Oracle do Node:
- apex_web_service.make_rest_request
- utl_http