Rad*_*Hex 16 html javascript django redirect
我需要通过POST请求将用户重定向到外部站点.
我想出的唯一选择是通过JavaScript提交表单.
有任何想法吗?
dec*_*eze 34
目前还不是很清楚你的意思,所以让我们采取一些场景:
用户应将表单POST到您自己以外的服务器
简单,只需将目标指定为表单操作:
<form action="http://someotherserver.com" method="post">
Run Code Online (Sandbox Code Playgroud)成功提交POST后,应重定向用户
像往常一样轻松,接受和处理POST数据,然后使用302
或303
重定向标头进行响应.
用户应将数据POST到您的服务器,并在验证后,您希望将该数据POST到另一台服务器
有点棘手,但有三种选择:
307
重定向进行回答,这意味着用户应在另一个地址尝试相同的请求.从理论上讲,它意味着浏览器应该将相同的数据POST到另一台服务器.我不太确定这是多么受支持,但任何了解HTTP1.1的浏览器都应该能够做到这一点.AFAIA在实践中经常没有使用它.请参阅此处以获取所有HTTP重定向选项的列表:http://en.wikipedia.org/wiki/Http_status_codes#3xx_Redirection
只需将HTML表单的操作URL设置到特定的外部站点即可。
<!doctype html>
<html lang="en">
<head>
<title>SO question 2604530</title>
</head>
<body>
<form action="http://stackoverflow.com/questions/2604530/answer/submit" method="post">
<textarea name="post-text"></textarea>
<input type="submit" value="Post Your Answer">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您会看到Stackoverflow具有良好的CSRF保护;)
使用表单可能是您作为链接、HTTP 重定向的唯一选择,并且只会导致浏览器使用GET<meta http-equiv="refresh" >
方法加载另一个 URL 。
不过,您不一定必须使用 JavaScript 来提交表单。如果某些用户交互是可以接受的,您可以使用带有某些字段的表单<input type="hidden">
并让用户按下提交按钮。
您可能还想确保您重定向到的页面尚未接受 GET 参数。有些脚本不加区别地接受 GET 和 POST。
归档时间: |
|
查看次数: |
49041 次 |
最近记录: |