gpt4 book ai didi

python - 来自 Python 的 Node JS 发布请求

转载 作者:可可西里 更新时间:2023-11-01 17:17:38 25 4
gpt4 key购买 nike

[免责声明:我是网络工程的绝对初学者!!:)]

我构建了一个 NodeJS 服务器,其中包含一个用于用户及其密码的小型数据库。我为此创建了一个小网站,您可以在其中输入您的用户名和密码,它会为您创建一个 session ,以便您登录。它工作正常。

现在想用Python写点东西自动登录小树莓。经过大量研究,我想出了一个 像这样的 python 程序:

import requests 
def authentification():
s = Session();

req = Request('POST', "http://192.168.7.1:3000/auth")
prepped = req.prepare()
prepped.body = 'username=test&password=test'

#del prepped.headers['Content-Type']

resp = s.send(prepped)
print resp.text
r = requests.get('http://192.168.7.1:3000/home')
print r.text

我在 NodeJS 应用程序中的函数如下所示:

  app.post('/auth', function(request, response) {
var username = request.body.username;
var password = request.body.password;
console.log("Somebody tries to acces");
console.log(username)
if (username && password) {
connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
if (results.length > 0) {
request.session.loggedin = true;
request.session.cookie.maxAge = 3000;
request.session.username = username;
response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});

当我尝试像我在浏览器中使用我的程序那样对您进行身份验证时,我最终会得到:response.send('请输入用户名和密码!');我的发布请求有什么问题?我需要更改什么才能找到我的密码和用户名?

对我来说另一个重要的问题是我如何在 Python 中保持 Session 处于唤醒状态以执行其他一些请求。对于文件等?

非常感谢您的帮助!如果我的问题或我提供的输入有任何问题,请告诉我,我会提供您需要的信息!

亲切的问候卡尔

最佳答案

Python部分(客户端)

随着requests module您可以使用 data 属性发送一个post 请求,您向该属性提供一个包含您的负载的字典。看起来像这样

import requests

url = 'http://localhost:3000/auth'

correct_payload = {'username': 'hello', 'password': 'p4$$w0rd!'}
wrong_payload = {'username': 'hello'}

# Output => OK
r = requests.post(url, data=correct_payload)
print(r.text)

# Output => You need to provide Username & password
r = requests.post(url, data=wrong_payload)
print(r.text)

Node.JS 部分(服务器)

要解析您从客户端 接收到的数据,请使用 body-parser包装为 Express.js middleware .这将解析您的数据并将其放入 req.body。代码看起来像这样

const express = require('express')
const bodyParser = require('body-parser')

const port = 3000
const app = express()
app.use(bodyParser.urlencoded({ extended: false }))

app.post('/auth', (req, res) => {
const { username, password } = req.body;

if (username && password) {
res.send('OK'); // ALL GOOD
} else {
res.status(400).send('You need to provide Username & password'); // BAD REQUEST
}
});


app.listen(port, () => console.log(`Example app listening on port ${port}!`))

关于python - 来自 Python 的 Node JS 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com