我有一个表单,它将凭据发送到端点进行身份验证,它应该返回一个令牌。我想用javascript替换HTML表单,但我不能让它工作。为了找出为什么它不工作,我试着用Postman做同样的事情,我得到的结果是,当我发送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(fetch API)?另外,当发送json而不是其他两个选项时,端点是否无法工作?
2条答案
按热度按时间atmip9wb1#
端点是否可以区分发送的表单或javascript(获取API)?
不太喜欢。
如果它是一个跨域请求,那么JS将添加一个
Origin
头。客户端代码也可以 * 显式地 * 添加不同的头。
有什么原因可以解释为什么一个端点在发送JSON而不是其他两个选项时无法工作?
如果端点没有被设计为解析JSON格式的请求。
听起来你把事情弄得太复杂了。
只需编写JS代码,使用
application/x-www-form-urlencoded
或multipart/form-data
(因为它们是它支持的格式)而不是JSON发出POST请求。您也可以重写端点以支持JSON。
osh3o9ms2#
我也面临着同样的问题。
错误的JSON格式(数值中未加双引号)。
正确的JSON(在数值中加上双引号)