繁体   English   中英

邮递员表单数据和 x-www-form-urlencoded 工作但原始 json 没有

[英]Postman form-data and x-www-form-urlencoded work but raw json doesn't

我有一个将凭据发送到端点进行身份验证的表单,它应该返回一个令牌。 我想用 javascript 替换 HTML 表单,但我无法让它工作。 为了找出它不起作用的原因,我尝试对 Postman 做同样的事情,我得到的结果是,当我发送带有 body 作为表单数据的 POST 请求时,它工作正常。 将它作为 x-www-form-urlencoded 发送也可以正常工作,但是当我将它作为 json (Content-Type: "application/json") 发送时,它不会。

请求 JSON 数据:

{
    "username": "my_username",
    "password": "my_password",
    "referer": "http://127.0.0.1:5500",
    "f": "json"
}

my_password 包含字母、点和下划线,但没有其他特殊字符。 我的密码只有一个感叹号作为特殊字符。

端点能否区分正在发送的表单或 javascript(获取 API)? 另外,是否有任何原因导致端点在发送 json 而不是其他两个选项时无法工作?

端点能否区分正在发送的表单或 javascript(获取 API)?

并不真地。

如果是跨域请求,那么 JS 将添加一个Origin标头。

客户端代码也可以显式添加不同的标头。

在发送 json 而不是其他两个选项时,是否有任何原因导致端点无法工作?

如果端点不是为解析 JSON 格式的请求而设计的。


听起来你把事情复杂化了。

只需编写您的 JS 代码以使用application/x-www-form-urlencodedmultipart/form-data (因为这些是它支持的格式)而不是 JSON 来发出 POST 请求。

您也可以重写端点以支持 JSON。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM