鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 我想寫一個chrome擴展,上傳自己的瀏覽記錄到我的數(shù)據(jù)庫??墒前俣日fjs連接不

我想寫一個chrome擴展,上傳自己的瀏覽記錄到我的數(shù)據(jù)庫。可是百度說js連接不了數(shù)據(jù)庫,不知道大佬們有什么辦法,求告知??!

js操作數(shù)據(jù)庫

回答
編輯回答
練命

前端 的js肯定不能直接操作數(shù)據(jù)庫,但你可以通過ajax把數(shù)據(jù)發(fā)給接口,通過接口把數(shù)據(jù)寫入數(shù)據(jù)庫。

2017年4月14日 06:44
編輯回答
不將就

可行的辦法倒是有,但都要求數(shù)據(jù)庫是你自己的,而且安全去喂狗

瀏覽器JavaScript不能直接連接數(shù)據(jù)庫,最根本的原因是宿主環(huán)境是瀏覽器,而瀏覽器一般情況下不會提供TCP Socket直接給JavaScript用,太危險了。最接近的Websocket是應用層協(xié)議,SQL服務器根本不會認。有沒有辦法搞到TCP Socket呢?還真有。

  1. Chrome Apps:算是Chrome Extension的加強版,本來設計是給Chrome OS用的,后來開了口子給其他系統(tǒng)用,最近又反悔了,從商店下架了所有Apps,但API還是沒刪掉。作為Chrome OS的Native Apps替代品,自然是有完整的TCP Socket可以用的,chrome.sockets.tcp可以了解一下。
  2. Extension + Native:瀏覽器不給TCP Socket,但是允許Extension跟原生本地程序通信,原生本地程序又可以隨便開TCP Socket,那就簡單了。本地搭一個node服務器其實很快,之前學過的話一個小時就能完事(而且寫JavaScript的遲早都要學node不是么),比去寫Chrome Apps還快,畢竟你不用從TCP開始從頭開發(fā),npm上一大堆數(shù)據(jù)庫的包可以用。

但是以上方式都要求你的數(shù)據(jù)庫能從公網(wǎng)直接訪問??紤]到目前國內(nèi)的網(wǎng)絡環(huán)境,題主應該是沒有自己的IP的,那數(shù)據(jù)庫就會暴露給一整個網(wǎng)段,想想都覺得菊花不保。

補充一下,上面題主的評論里提到了JackDB,我覺得很神奇,于是注冊了一下,然后發(fā)現(xiàn)它只不過是個網(wǎng)站的快捷方式……那個網(wǎng)站的工作方式也是第三方轉(zhuǎn)發(fā)SQL請求,要把密碼直接交給網(wǎng)站,真是簡單粗暴……

clipboard.png

2017年5月18日 20:30