Знам, че това е стара публикация... просто исках да спомена сигурен начин nodejs да комуникират с Oracle без допълнителни модули.
Настройте oracle, така че да може да създава и получава http заявки. Има няколко начина да направите това:
Най-лесно е да включите epg gateway:
Също така можете да настроите modplsq:
или Apex слушателя:
След това във възел js направете стандартен 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);
});
Който и подход...защитете оракула, така че да отговаря само на ip адреса на nodejs сървъра. Така че, ако работи на локален хост:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Също така блокирайте повиквания към всеки друг пакет и процедура. Има няколко начина да направите това в зависимост от пътя, който поемате.
Уверете се, че правите това поне:
- създайте бял списък с елементи, които могат да бъдат извикани от мрежата
- изискване всички URL адреси да съдържат името на схемата като:myuser.myprocedure
- уверете се, че първата част от URL адреса (до пътя на заявката) съдържа само a-z 0-9
- един наистина добър бял списък ще се погрижи за повечето от тези елементи
Ето го...няма нужда да се притеснявате дали даден модул ще се повреди или ще спре да работи със следващото издание.
И... можете лесно да комуникирате от Oracle към Node, като използвате:
- apex_web_service.make_rest_request
- utl_http