我們與MVC(4,5)合作,我們的一些客戶要求我們將實施一些谷歌分析/ facebook像素代碼。 我們不擅長搜索引擎優化等,所以我們只是採取我們的客戶提供的JS代碼,我們在他們的網站上實施它(我們的主機(快速瀏覽和檢查代碼後))。從用戶輸入中獲取JS腳本塊的好習慣?
現在我們想要自動化流程,所以我們想創建一個CMS頁面,管理員(我們的客戶)可以發佈一個腳本塊(他自己的分析代碼)到我們的服務器上進行自動檢查和實施相關視圖(mvc .net)。
我想到了兩種不同的方式: 1.使用txt/js的文件上傳並解析它以使用HttpPostedFileBase和BinaryReader字符串。 2.從輸入表單獲取腳本作爲文本。
商業智慧,我們更願意方法2.但這似乎多了很多危險。 我將不得不繞過MVC的請求驗證,以便讓用戶傳遞給控制器「有潛在危險的代碼」。
有沒有辦法,我缺少另一種方式? 作爲從最終用戶獲取這種輸入的最佳實踐,哪些方面考慮? 我確信這已經完成。
這是我的方法#1代碼:
[HttpPost]
public ActionResult AnalitycsCMS(HttpPostedFileBase scriptFile)
{
if (scriptFile != null && scriptFile.ContentLength > 0)
{
// Validate through List of valid extentions and type (strings)
bool isValidExtention = extentions.Any(item => scriptFile.FileName.EndsWith(item, StringComparison.OrdinalIgnoreCase));
bool isValidType = types.Any(item => scriptFile.ContentType.EndsWith(item, StringComparison.OrdinalIgnoreCase));
if (isValidExtention && isValidType)
{
// Read bytes from http input stream
BinaryReader br = new BinaryReader(scriptFile.InputStream);
byte[] data = br.ReadBytes(scriptFile.ContentLength);
string result = System.Text.Encoding.UTF8.GetString(data);
ViewBag.ScriptFile = result;
}
}
return View();
}
你看着使用類似[谷歌標籤管理器](https://www.google.com/analytics/tag-manager/)? – Stu
@Stu關心地解釋一些關於它如何幫助我實現我的目標? –
看起來您希望將特定代碼添加到DOM以運行跟蹤和標記(即Google Analytics或Facebook重新定位等)。如果是這樣,這就是GTM所做的,這意味着您不必提供內部解決方案。 – Stu