2015-05-31 54 views
1

通過ajax將對象的標識符傳遞給服務器/控制器的最佳方式是什麼(例如,我們在網站「book/edit/mybookname」以及如何更新本書實體「mybookname」通過ajax)?通過Ajax將實體的身份傳遞給控制器​​

我想到了一些方法,並想知道,最常見的,最安全的方法是什麼:

1)那本書的ID控制器

- >問題:ID變量/域可以通過使用瀏覽器

2)的控制檯來改變傳遞當前URL(window.location.href)提供給控制器,並在控制器

提取出了名的URL的 - >窗口.location.href不能被改變呃控制檯..?

我知道我必須檢查服務器端,如果用戶應該有權限編輯實體。但是,如果他有多本書,他可能會將ID參數更改爲他擁有的另一本書,然後他將在後臺更改另一本書的演示文稿,而不是他目前正在瀏覽的那本書。

+1

您可以在用戶訪問「book/edit/mybookname」時設置會話變量。但我真的不明白這一點,如果用戶想搞砸他/她自己的收藏品,那是他們的問題海事組織。 – jeroen

+0

嗨jeroen,Session變量沒有幫助,你可以用不同的書打開幾個標籤。好吧,通常的方法是說:檢查訪問權限,但是當記錄的用戶試圖操縱表單/參數時,最終他只能搞亂他的書。 – user3746259

+1

確保無法操作的唯一方法是使用不是來自用戶的值,而是存儲在服務器上的值。但正如你注意到的那樣,這也可能會失敗。所以,是的,他們的收藏,他們的問題,只要他們只能訪問自己的東西。 – jeroen

回答

0

想到ajax你可以使用發佈數據。這不能在瀏覽器地址欄中編輯。

var xmlhttp;  
} 

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState===4 && xmlhttp.status===200) 
    { 
     //do whatever with response 
    } 

    }; 
xmlhttp.open("POST","ajax/ajax.php); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("field1=whatever&field2=whateverelse"); 
+1

嗨凱,謝謝你的回答。我認爲這只是「移動」將值更改爲另一個點的可能性。因爲問題不是「傳球部分」,問題是我需要在頁面的某處存儲id,並且此值可以是改變(在一個JS配置對象或隱藏的領域)。所以它不會改變任何使用POST或URL來傳送ID。我的結論是現在我只是通過「window.location.href」,因爲這個值不能改變。 – user3746259

相關問題