Javascript 使用JS Fetch模拟Python HTTP请求
我可以使用python请求成功地执行一个简单的HTTP请求:Javascript 使用JS Fetch模拟Python HTTP请求,javascript,python,http,python-requests,fetch,Javascript,Python,Http,Python Requests,Fetch,我可以使用python请求成功地执行一个简单的HTTP请求: def renew_token(): """ Send a request to renew the login token """ url = url fields = { "username": "username", "password": "password" } r = requests.post(url, data=fields
def renew_token():
"""
Send a request to renew the login token
"""
url = url
fields = {
"username": "username",
"password": "password"
}
r = requests.post(url, data=fields)
print(r)
我正在尝试使用javascript获取来执行完全相同的请求,但没有成功
async function renewToken(url = '', fields = {}) {
const response = await fetch(url, {
method: 'POST'
data: JSON.stringify(fields),
mode: 'cors',
cache: 'no-cache',
headers: {
'Content-Type': 'application/json',
//'Content-Type': 'application/x-www-form-urlencoded',
},
});
return await response.json();
}
renewToken('url', { username: 'username', password: 'password' })
.then((data) => {
console.log(data); // JSON data parsed by `response.json()` call
});
我得到的错误是:
{ data: null,
message: 'No username or password provided',
status: 'api-error' }
这意味着内容类型有问题。我尝试将内容类型更改为'application/x-www-form-urlencoded',但我得到了相同的错误
使用fetch模拟python请求缺少什么?必须使用表单数据,而不是正文中发送的数据:
async function renewToken(url = '', fields = {}) {
const response = await fetch(url, {
method: 'POST', //
body: 'username=username&password=password',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
});
return await response.json();
}