我必须在 url 中传递一个参数。我无法像往常一样将它发送到 GET 请求中,变量和值随请求一起显示在地址栏中。因此,最终用户可以更改此变量值的值并发送将被处理的请求。
href="url=/admin/usermanagement/?flag=2
我想发送这个隐藏flag=2
现在这是一个 GET 请求,它可以在地址栏中看到。如果您对将其更改为 POST 以隐藏和发送值有任何想法,请给出您的建议。
我必须在 url 中传递一个参数。我无法像往常一样将它发送到 GET 请求中,变量和值随请求一起显示在地址栏中。因此,最终用户可以更改此变量值的值并发送将被处理的请求。
href="url=/admin/usermanagement/?flag=2
我想发送这个隐藏flag=2
现在这是一个 GET 请求,它可以在地址栏中看到。如果您对将其更改为 POST 以隐藏和发送值有任何想法,请给出您的建议。
您仍然可以使用 html 表单,但对用户“隐藏”它:
<!DOCTYPE html>
<html>
<body>
<form id="myform" method="post" action="/">
{% csrf_token %}
<input type="hidden" name="flag" value="2" />
<a href="#" onclick="document.forms[0].submit();return false;">Let's go!</a>
</form>
</body>
</html>
和观点:
def index(request):
if request.method == 'POST':
try:
flag = request.POST['flag']
# TODO use flag
except KeyError:
print 'Where is my flag?'
return render_to_response('index.html', {},
context_instance=RequestContext(request))
您可以使用 AJAX 完全摆脱表单。
只需将其添加到您的 JavaScript 中:
function postTo(url, query) {
var request = (XMLHttpRequest?new XMLHttpRequest():new ActiveXObject());
request.open('POST', url, true);
request.send(query);
}
然后用这样的东西打电话:
postTo('/admin/usermanagement/','flag=2');
请注意,这不会重新加载页面。如果您想重新加载页面,请使用 Borges 的回答。