或換句話說:如何向客戶端發送來自服務器的消息以在頁面上執行一些js代碼?Cookie是向客戶提供服務器執行某些js代碼的指令的唯一方式嗎?
這不是一個Ajax請求,它是一個普通的GET
瀏覽器服務器請求。
比方說,我有這樣的代碼在我的應用程序的前端JavaScript文件:
if(condition_1) {
FB.getLoginStatus(...)
}
else if(condition_2) {
PayPal.getLoginStatus(...)
}
else {
do smth else...
}
所以我想給那些condition_1
或condition_2
指令與服務器的響應一起。這不是Ajax請求。這是一個從瀏覽器到服務器的簡單的GET
請求。
目前只有我的腦海裏出現了餅乾。
1)服務器從瀏覽器收到GET請求。
2)我讀了餅乾。如果沒有一定的cookie與請求來了,我設置condition_1
,否則我設置condition_2
餅乾:
if(req.cookies["foo"] == "foo") {
res.cookies("foo", "condition_1")
.status(200)
.send()
.end();
}
else if(req.cookies["foo"] == "bar") {
res.cookies("foo", "condition_2")
.status(200)
.send()
.end();
}
3)一種服務器發送200響應返回給客戶端。
現在在瀏覽器我檢查這些Cookie(爲簡單起見,我做document.cookie.foo
):
if(document.cookie.foo == 'condition_1') {
FB.getLoginStatus(...)
}
else if(document.cookie.foo == 'condition_2') {
PayPal.getLoginStatus(...)
}
else {
do smth else...
}
我的問題是,是cookies在這種情況下的唯一途徑?指示客戶端代碼執行某些條件
呃,餅乾在這裏完全不相干。它們意味着與請求一起發送到服務器,而不是其他方式。因爲您已經在做GET請求,您可以直接回答並評估答案,或者如果您想繞過客戶端的請求,則可以使用websockets。 –
有很多方法可以在請求響應週期之間傳遞一些「上下文」,如隱藏的HTML輸入元素。 – Ankur
除了@Ankur所說的,服務器還可以使用動態生成的javascript作爲一個單獨的資源(一個.js文件)或嵌入的' – Arnauld