首页 > 解决方案 > 如何强制 RazorPage RedirectToPage 执行 POST 而不是 GET

问题描述

对于 .net core RazorPages,通常将代码放在 OnGet() 或 OnPost() 函数中执行某些工作,然后将用户重定向到另一个带有一些数据(例如匿名对象)的 RazorPage:

public async Task<IActionResult> OnPost()
{
   // do some work

   // redirect the user to another page
   return RedirectToPage("NextPage", new { user = _user, isComplete = _isComplete });
}

问题是 RedirectToPage总是将对象中的参数作为 GET 重定向,并且参数在浏览器地址栏中可见:

https://example.com/NextPage?user=Pete&isComplete=true

如何强制 RazorPage 将重定向请求作为 POST 而不是 get 发送?

标签: asp.net-corerazor-pages

解决方案


你不能。重定向只是带有 301、302 或 307 状态代码的Location响应以及包含您要重定向到的 URL 的响应标头。到那时,就完成了。然后,客户端可以选择遵循该Location标头中的 URL(如果它选择 - 不需要)。默认情况下,Web 浏览器会自动跟随它,但它会通过 GET 来完成。没有办法强制 POST。


推荐阅读