POST JSON 到 Razor 页面返回 400

班克斯桑

我知道(好吧,强烈怀疑)这是因为 AntiRequestForgery 令牌无效。

我正在使用 Fiddler 发出两个请求。第一个返回一个带有表单的页面:

GET http://localhost:5000/ HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: en-GB,en;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
Accept-Encoding: gzip, deflate
Host: localhost:5000
Connection: Keep-Alive
Cookie: Webstorm-c18bf75a=81231d9f-edfd-4dbe-bb5a-f6a38d7df3c8; Webstorm-e6130ebb=b043c250-7e3b-44e1-ae53-2a1fd1e938ad; ai_user=a5B0s|2018-04-18T10:45:08.497Z; Webstorm-4df43b9a=25c25d80-7f4a-4ecf-8b74-a84698ccdfbe; .AspNetCore.Antiforgery.eVFzQSsi0_I=CfDJ8ERJiHn9THRElV--1wHd1Ro9Jv2DKwgMTQr1VCL4I-TphhEyTEiHsVS0z8K-Jyz_6VMNQETIEk3Yi5czv3rgMAwzmG76UrsB078j5oPJ8m6esxBQ8zLH9OEpeXqMDu570wRLkCSEQPyTIakVibTOmEM
HTTP/1.1 200 OK
Date: Sun, 25 Nov 2018 14:44:15 GMT
Content-Type: text/html; charset=utf-8
Server: Kestrel
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 697

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
<article>
    <section>
        <h1>Index</h1>
    </section>
    <section>

<form method="post" action="/Echo">
    <p><label for="message">Enter message:  </label><input type="text" name="message" id="message"/></p>
    <p><input type="submit" value="Submit"/></p>
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8ERJiHn9THRElV--1wHd1Rp9WyK4QCn6-wcGhXPDZHOFgkcjhJEBGrYgrsoDN3ETiqDId6aMvaHxmtunVp8ioxWYWAMqVqp3HU4ErpY7_lUzw1monlv7AMPY_Q2mzcP1YijG-86DgSeJXaXnpCWNl4c" /></form>
    </section>
</article>
</body>
</html>

我可以看到嵌入的令牌,我想将帖子作为 JSON 而不是 url 编码发送。我发送的第二个请求是:

POST http://localhost:5000/Echo HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Referer: http://localhost:5000/
Accept-Language: en-GB,en;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
Content-Type: application/json
Accept-Encoding: gzip, deflate
Content-Length: 229
Host: localhost:5000
Connection: Keep-Alive
Pragma: no-cache
Cookie: Webstorm-c18bf75a=81231d9f-edfd-4dbe-bb5a-f6a38d7df3c8; Webstorm-e6130ebb=b043c250-7e3b-44e1-ae53-2a1fd1e938ad; ai_user=a5B0s|2018-04-18T10:45:08.497Z; Webstorm-4df43b9a=25c25d80-7f4a-4ecf-8b74-a84698ccdfbe; .AspNetCore.Antiforgery.eVFzQSsi0_I=CfDJ8ERJiHn9THRElV--1wHd1Ro9Jv2DKwgMTQr1VCL4I-TphhEyTEiHsVS0z8K-Jyz_6VMNQETIEk3Yi5czv3rgMAwzmG76UrsB078j5oPJ8m6esxBQ8zLH9OEpeXqMDu570wRLkCSEQPyTIakVibTOmEM

{
    "message":  "Hello+World",
    "__RequestVerificationToken": "CfDJ8ERJiHn9THRElV--1wHd1Rp9WyK4QCn6-wcGhXPDZHOFgkcjhJEBGrYgrsoDN3ETiqDId6aMvaHxmtunVp8ioxWYWAMqVqp3HU4ErpY7_lUzw1monlv7AMPY_Q2mzcP1YijG-86DgSeJXaXnpCWNl4c"
}

这将返回 400:

HTTP/1.1 400 Bad Request
Date: Sun, 25 Nov 2018 14:45:12 GMT
Server: Kestrel
Content-Length: 0

当我发布 JSON 时,我应该如何传递令牌?

班克斯桑

字面上刚看到答案。tokan 应该作为标题传递:

__RequestVerificationToken: CfDJ8ERJiHn9THRElV--1wHd1RqrINvuOTauZLAAg86eE91T6PHlKf21JOJVGA1TdMoksEVSlE-UWkOon2A0x1RSOqy0gQ_uSZxwQiBy8YArAowajUR1uJo3B4XAWl3abaToa8Gp8K4SPJ1hmSKjXAwzZvk

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

POST到Razor页面时出现400错误的请求

Razor Pages Post 返回 400

服务器端Blazor页面发布到Razor页面http错误400

使用Spring MVC,接受JSON错误的POST请求会导致返回默认的400错误代码服务器页面

如何找出哪个中间件 POST 到 Razor 页面失败以及原因

jQuery AJAX 请求返回 HTML 而不是 JSON 结果(Razor 页面)

Razor 页面 POST 处理程序未从 jQuery AJAX 接收 JSON 数据

将参数从 Razor 页面传递到 Razor 组件

简单的ASP.Net Core Razor页面上的HTTP 400

WCF JSON POST请求,单个字符串参数未绑定并返回400

发生错误400(错误请求)时,使用Axios从POST捕获返回json

Flickr / FlickrNet结果到Razor页面

从iframe发出POST表单时,asp剃刀页面返回400代码

从反应客户端应用程序到 spring-boot 服务器的 HTTP POST 请求返回 400 错误

FLASK REST API在POST上返回400

HTTP POST 返回 400 错误请求

HttpURLConnection POST返回400错误请求

HTTPClient Post 返回错误请求 400

WCF Post方法,返回400错误请求

使用Razor页面返回XML?

从 Razor 视图传递 List<Object> 到 Post Action

重定向到Razor页面中具有ID的页面

为什么我的带有json参数和标头的HTTP POST请求返回400错误请求?

模型派生API-SVF POST作业始终返回400-请求正文不是有效的json

重定向到OnPost中特定位置的Razor页面

集合可以绑定到Razor Pages中的页面模型吗?

到基本Razor页面的多个别名路线

从Razor页面发送List <Object>到要更新的行?

将 blazor 组件中的事件注册到 razor 页面