[英]Node.js: Redirect and send page at once
我正在嘗試為Node.js中的HTML頁面構建簡單的服務器。 我的問題是,當我導航到(例如) http://localhost:8080/someDirectory
,瀏覽器認為someDirectory是文件(實際上,它在內部被重定向到someDirectory/index.html
)。
因此,當我執行<script src="./script.js"></script>
,它將嘗試使用http://localhost:8080/script.js
而不是http://localhost:8080/someDirectory/script.js
。
我能想到的唯一解決方案是將瀏覽器重定向到/someDirectory/
(末尾帶有斜杠)。 然后,瀏覽器正確地知道它是目錄而不是文件。
我的問題是,由於雙重請求,我不想讓我的服務器變慢(客戶端被重定向,發送另一個請求,然后最終獲得網頁)。 是否有發送發送頁面並僅通知瀏覽器更改的可能性,而不是使用302標頭重定向?
http://localhost/someDirectory
,尾部的斜杠會自動添加。
我只是很好奇它的完成方式(沒有其他PHP或javascript)。
不,這是不可能的,甚至不是正確的解決方案。 您當然可以通過重定向發送內容,但這毫無意義,因為瀏覽器不會顯示它……它會立即跟隨重定向。
如果要/someDirectory/
,則與/someDirectory
不同。 您必須重定向。
我建議使用history.replaceState
( MDN )。 這將適用於大多數現代瀏覽器(大多數用戶),但不適用於較舊的瀏覽器。 由於較舊的瀏覽器正在逐漸減少,因此隨着時間的流逝,它應該不再是一個問題。 這應該可以解決問題-您需要將其直接粘貼到HTML標記中才能正常工作:
if ( !window.location.pathname.match(/\/$/) ) {
if ( window.history && window.history.replaceState ) {
window.history.replaceState(null, null, window.location.pathname + '/');
document.write('<script src="./script.js"></script>');
} else
window.location.replace( window.location.pathname + '/');
} else {
document.write('<script src="./script.js"></script>');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.