2016-12-15 65 views
1

我們假設我需要使用文件名中的相對路徑進行AJAX請求,而不使用windows.location(由於客戶特定請求)。從文件名(不帶windows.location)的Javascript相對路徑

所以,一個hypotetical頁:mywebsite/myfolder/mypagename,我需要做的是這樣的:

 
$.get("./data/mydata.json", function(data) { 
    .... 
}); 

這樣的要求點:mywebsite/myfolder/data/mydata.json,但我也需要點:mywebsite/myfolder/mypagename/data/mydata.json

是有沒有辦法做到這一點?我也tryed "~/data/mydata.json"但似乎發送任何Ajax調用之前爲"./data..."

+0

我不認爲你可以做到這一點,而無需使用windows.location – GiuServ

+0

不能使用windows.location由於客戶的要求。它有一些SAST的後果,客戶不想使用它。 – freecloud

+0

所以使用像你這樣的圖像,CSS,JavaScript等相對路徑...... – epascarello

回答

0

由於我要問,似乎不可能,我使用windows.location.pathname上的URL驗證正則表達式的工作:

 
if (! (/([<>]|javascript:)/.test(decodeURIComponent(apiUrl)))) { 

    ... do the call 

} else { 

    window.location.href = '/404'; 

} 

希望它可以幫助別人

+0

這是如何回答你的原始問題? – epascarello

+0

它沒有。這是一個解決方案:我讓我的客戶接受使用windows.location,但我做了一個URL檢查,以防止任何寫在URL上的js被處理。 因此,如果有人打電話給這樣的頁面:/ mypage/正則表達式重定向到404。 – freecloud

+0

我不確定XSS會如何影響你...我仍然想知道爲什麼你不能使用相對路徑。 – epascarello