flask axios post return http 状态码 405/400
flask axios post return http status code 405/400
我正在尝试 post 使用 axios 将数据发送到服务器。我可以点击 GET 请求,但在 POST.
中遇到问题
# i am using CORS
app = Flask(__name__, static_url_path='',
static_folder='web/static', template_folder='web/templates')
CORS(app)
#flask server code
@app.route('/login', methods=['GET', 'POST'])
def login():
print('hi')
global logingStatus
global currentUser
if request.method == 'POST':
result = db.login(request.form['username'], request.form['password'])
if result == 'success':
logingStatus = True
currentUser = db.getUserObj(request.form['username'])
# print(type(currentUser), '<----')
return redirect(url_for('dashboard'))
else:
return result
else:
logingStatus = False
return render_template('login.html')
客户端代码:
axios.post('/login/', {
username: this.username,
password: this.password
}).then(function (response) {
if(response.data.includes('ERROR')) {
this.errorMessage = response.data
this.isError = true
}
}).catch(function (error) {
console.log(error);
});
错误:
服务器控制台:
127.0.0.1 - - [28/Sep/2020 13:55:04] "GET /login HTTP/1.1" 200 -
127.0.0.1 - - [28/Sep/2020 13:55:21] "POST /login/ HTTP/1.1" 405 -
客户:
无法加载资源:服务器响应状态为 405(方法不允许)
我做错了什么?
编辑:
@cizario 回答后我尝试了
axios('/login',{...});
# error
Failed to load resource: the server responded with a status of 400 (BAD REQUEST)
我不确定哪里出了问题。但是我没有解决我的问题。
此外,当我尝试这个时:
@app.route('/test', methods=['GET', 'POST'])
def test():
return 'test'
# response: test
# headers
access-control-allow-origin:*
有效!
之前的 post 请求给出了响应 400 BAD REQUEST
为什么?
开始 2:
好的,我发现问题与我如何从我应该使用 request.json['username'] 而不是 request.form['username'] 的请求访问数据有关(这导致 400) (在这种情况下)。此外,双方的不同路由路径导致 405。
只需删除
中的斜线
axios.post('/login', {..})
因为您在
中定义了 login
路线,最后 /
@app.route('/login', methods=['GET', 'POST'])
我正在尝试 post 使用 axios 将数据发送到服务器。我可以点击 GET 请求,但在 POST.
中遇到问题# i am using CORS
app = Flask(__name__, static_url_path='',
static_folder='web/static', template_folder='web/templates')
CORS(app)
#flask server code
@app.route('/login', methods=['GET', 'POST'])
def login():
print('hi')
global logingStatus
global currentUser
if request.method == 'POST':
result = db.login(request.form['username'], request.form['password'])
if result == 'success':
logingStatus = True
currentUser = db.getUserObj(request.form['username'])
# print(type(currentUser), '<----')
return redirect(url_for('dashboard'))
else:
return result
else:
logingStatus = False
return render_template('login.html')
客户端代码:
axios.post('/login/', {
username: this.username,
password: this.password
}).then(function (response) {
if(response.data.includes('ERROR')) {
this.errorMessage = response.data
this.isError = true
}
}).catch(function (error) {
console.log(error);
});
错误:
服务器控制台:
127.0.0.1 - - [28/Sep/2020 13:55:04] "GET /login HTTP/1.1" 200 -
127.0.0.1 - - [28/Sep/2020 13:55:21] "POST /login/ HTTP/1.1" 405 -
客户:
无法加载资源:服务器响应状态为 405(方法不允许)
我做错了什么?
编辑:
@cizario 回答后我尝试了
axios('/login',{...});
# error
Failed to load resource: the server responded with a status of 400 (BAD REQUEST)
我不确定哪里出了问题。但是我没有解决我的问题。
此外,当我尝试这个时:
@app.route('/test', methods=['GET', 'POST'])
def test():
return 'test'
# response: test
# headers
access-control-allow-origin:*
有效!
之前的 post 请求给出了响应 400 BAD REQUEST
为什么?
开始 2:
好的,我发现问题与我如何从我应该使用 request.json['username'] 而不是 request.form['username'] 的请求访问数据有关(这导致 400) (在这种情况下)。此外,双方的不同路由路径导致 405。
只需删除
中的斜线axios.post('/login', {..})
因为您在
中定义了login
路线,最后 /
@app.route('/login', methods=['GET', 'POST'])