簡體   English   中英

從第三方站點的script / include標記配置Javascript的最佳方法是什么?

[英]What is the best way to configure Javascript from third-party site's script/include tag?

tl; dr:使用動態視圖引擎(例如Sinatra + ERB)動態生成具有自定義內容的javascript文件以嵌入第三方網站是否安全/明智?

具體地說,使用該服務器端視圖引擎將這些數據作為變量嵌入javascript頁面是安全/明智的嗎?

全文:

我有一個javascript / Sinatra應用程序,其功能有點類似於Google Analytics(分析),因為合作伙伴站點包括我們的javascript文件,並且JS代碼將數據發送到了我們的Sinatra應用程序。

我想讓我們的客戶輕松配置此javascript包含,因為他們需要與我們的javascript代碼進行通信的狀態數據(例如其客戶ID和當前登錄的用戶ID)。 但是,在腳本可以使用它們之前,必須通過服務器端數據庫轉換他們需要通信的數據。

我當前的方法感覺有些怪異:Sinatra將動態javascript文件作為“視圖”提供。 客戶端包括帶有腳本標簽的文件,例如:

<script src="/dynamic-js/include.js?client_key=xyz&user_key=abc">

在Sinatra方面,它獲取這些參數,使用數據庫將其轉換為內部值,然后使用以下代碼提供動態(erb)javascript文件:

window.ourInternalVars = {};
window.ourInternalVars.client_int_key="<%=client_int_key%>";
window.ourInternalVars.user_int_key="<%=user_int_key%>";

我的問題是這是否是“不良”解決方案(可能會產生不良和/或意想不到的結果)和/或是否存在“更好”的方法(廣泛使用的方法,使用現有庫的方法或遵循社區/行業的最佳實踐) )這個問題?

我顯然可以用一個靜態的javascript文件解決此問題,該文件讀取自己的URL參數並進行ajax調用以進行自我配置,但是這樣做速度較慢(腳本開始時不存在數據),因此對我們的用處不大(也不太可靠)。

我們還可以要求客戶對我們的服務器進行ajax / api調用以進行轉換,但這使腳本的安裝對他們來說更加復雜,我們希望對他們來說盡可能簡單(一行腳本)標記)。

我稍后是否可能會后悔上述策略,或者這似乎是管理javascript include的動態第三方輸入/配置的合理方法?

還請注意,我已經簡化了上面的用例,以使問題更清楚。

如果您正確地 轉義了這些值,對我來說看起來不錯。

也許Code Review的人有更多提示。 堆棧溢出適用於您的代碼無法正常工作的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM