第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我可以在java中使用來(lái)自服務(wù)器回調(diào)的javascript函數(shù)嗎?

我可以在java中使用來(lái)自服務(wù)器回調(diào)的javascript函數(shù)嗎?

白衣非少年 2021-07-13 13:13:01
我正在制作一些關(guān)于不使用瀏覽器服務(wù)的 Java 項(xiàng)目。所以,我想使用來(lái)自服務(wù)器的一些 JavaScript 函數(shù)(這是我的 POST 的回調(diào))我看到很多關(guān)于在 Java 中使用 JavaScript 的代碼,但它來(lái)自本地文件。我想一個(gè)解決方案:當(dāng)回調(diào)即將到來(lái)時(shí),保存此代碼并再次使用它。但我認(rèn)為這對(duì)我們的項(xiàng)目來(lái)說(shuō)不是最佳的。你能給我任何其他解決方案嗎?先感謝您。
查看完整描述

2 回答

?
交互式愛(ài)情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

是的,你可以,正如@Daniel Baranowski 上面建議的那樣。
不,你絕對(duì)不應(yīng)該。
運(yùn)行客戶提交的任何代碼都會(huì)使您面臨極大的風(fēng)險(xiǎn)。
它可以訪問(wèn)您的文件系統(tǒng)嗎?那你就麻煩了。
它可以執(zhí)行網(wǎng)絡(luò)調(diào)用嗎?那你也有麻煩了。
即使您阻止了這些選項(xiàng),您是否檢查此用戶代碼是否及時(shí)終止?

查看完整回答
反對(duì) 回復(fù) 2021-07-23
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

這當(dāng)然是可能的,但它會(huì)使您面臨巨大的安全風(fēng)險(xiǎn)。


沒(méi)有什么能阻止您直接從 String 運(yùn)行 JavaScript 代碼。將其保存在文件中不是必需的。您可以獲取發(fā)送到您的服務(wù)器的 POST 的正文,并像這樣執(zhí)行它:


 package example;


        import jdk.nashorn.api.scripting.JSObject;

        import jdk.nashorn.api.scripting.NashornScriptEngine;    

        import javax.script.ScriptEngineManager;

        import javax.script.ScriptException;


        public class Example {

            private final ThreadLocal<NashornScriptEngine> engineHolder;


            public Example() {

                // You don't need to run code from files. The code can be a string which was posted to your server.

                String jsCodeToRun = "function helloWorld(name) { return { value: 'Hello' + name } }"


                this.engineHolder = ThreadLocal.withInitial(() -> {

                    NashornScriptEngine nashornScriptEngine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");

                    try {

                        nashornScriptEngine.eval(jsCodeToRun);

                    } catch (ScriptException e) {

                        throw new RuntimeException(e);

                    }

                    return nashornScriptEngine;

                });

            }


           public JSObject runTheCode(String name) {

              try {

                JSObject result = (JSObject) engineHolder.get().invokeFunction("helloWorld", name);


                // The result will be an object returned by our helloWorld function.

                return result;

            } catch (Exception e) {

                throw new IllegalStateException(e);

            }

        }

        }


查看完整回答
反對(duì) 回復(fù) 2021-07-23
  • 2 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)