簡體   English   中英

我如何發布一個參數,使其不出現在查詢字符串中,以確保用戶不能直接在URL中更改該值?

[英]How can I POST a parameter so that it doesn't show up in the querystring, to make sure users can't change the value directly in the URL?

我有一個分頁的搜索結果頁面,當前頁面號包含在查詢字符串中,如下所示:

mysite.com/search/database-search?name=smith&page=10

我不希望用戶能夠直接在url中更改頁面號,他們只能通過單擊頁面按鈕來更改頁面。 因此,我需要從查詢字符串中刪除頁面,但仍將頁面號作為參數來獲取相應的結果頁面。

我以為可以通過使用POST而不是GET來完成此操作; 我的頁面按鈕最初設置為帶有“ href = / search / database-search?name = smith&page = xx”的鏈接,但是我認為,如果我使用表單來提交頁面編號,那將傳遞頁面編號而不會在查詢字符串中顯示它。

這是我嘗試的代碼:

function postToPage(page) {
    debugger;
    var url = window.location.href;
    var newForm = $("<form>", {
        "action": url
    }).append($("<input>", {
        "name": "page",
        "value": page,
        "type": "hidden"
    }));
    newForm.submit();
}

<a onclick="postToPage($(this).text());" href="javascript:void(0)" class="page-button">@pageNum</a>

但是,它不符合我的預期。 當我單擊頁面按鈕時,URL中的查詢字符串將被忽略,而“頁面”仍顯示在查詢字符串中,因此結果與我要完成的操作相反。 我丟失了所需的查詢參數,而“ page”是仍然包含在querystring中的唯一內容。

單擊頁面按鈕時,我被帶到“ / search / database-search?page = x”

有什么方法可以將頁面用作查詢參數,而不會顯示在URL中

編輯:我將窗體方法更改為“ POST”,但“頁面”變量正在丟失。 現在包括當前查詢字符串中的參數,但未使用頁面值。

似乎您沒有將表單的方法設置為POST。

function postToPage(page) {
    debugger;
    var url = window.location.href;
    var newForm = $("<form>", {
        "action": url,
        "method": "POST" // set form to POST, instead of the default GET
    }).append($("<input>", {
        "name": "page",
        "value": page,
        "type": "hidden"
    }));
    newForm.submit();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM