Flask CORS:我怎么能收到 'Authorization' header?
Flask CORS: how could I receive an 'Authorization' header?
我在 Vue.js 上有一个 front-end 应用程序,在 Flask/Python 上有一个 back-end 应用程序。
我正在尝试向 back-end 发送带有 'Authorization' header 的请求,但是 header 没有到达我的 back-end .
我已经尝试在 CORS 函数中提供此 header,但没有成功。
有人知道我该如何解决吗?
我在下面发送 front-end 和 back-end 代码。
提前谢谢你。
Vue.js代码
var authorization = ...
axios.post(process.env.VUE_APP_URL + 'ms3/sign_in',
{
params: {
}
}, {
headers: {
'Access-Control-Allow-Origin': '*'
'Authorization': authorization
}
}).then(response => {
localStorage.setItem('ms3_user_token', response.headers.authorization)
}).catch(error => {
self.errorSignIn = error
self.erroredSignIn = true
}).finally(() => {
self.loading = false
})
烧瓶代码:
from flask import Flask
from flask_cors import CORS
...
app = Flask(__name__)
CORS(app, origins='*',
headers=['Content-Type', 'Authorization'],
expose_headers='Authorization')
...
@app.route("/ms3/sign_in", methods = ["POST", "OPTIONS"])
def ms3_sign_in():
# the header does not exist
auth_header = request.headers.get("Authorization")
if auth_header is None or not auth_header.startswith('Basic '):
return jsonify({ "message": "Invalid 'Authorization' header" }), 401
username, password = ...
encoded_jwt_token = auth_login(username, password)
resp = Response("Returned Token")
resp.headers['Authorization'] = encoded_jwt_token
return resp
感谢 Python Brasil 小组的 Allan 帮助了我。
我在 Vue.js 申请中需要添加“'Content-Type': 'application/json'”。
我将更新后的代码发送到下面以供将来帮助:
Vue.js代码
var authorization = ...
axios.post(process.env.VUE_APP_URL + 'ms3/sign_in',
{
params: {
}
}, {
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json', // <-- here
'Authorization': authorization
}
}).then(response => {
localStorage.setItem('ms3_user_token', response.headers.authorization)
}).catch(error => {
self.errorSignIn = error
self.erroredSignIn = true
}).finally(() => {
self.loading = false
})
我在 Vue.js 上有一个 front-end 应用程序,在 Flask/Python 上有一个 back-end 应用程序。
我正在尝试向 back-end 发送带有 'Authorization' header 的请求,但是 header 没有到达我的 back-end .
我已经尝试在 CORS 函数中提供此 header,但没有成功。
有人知道我该如何解决吗?
我在下面发送 front-end 和 back-end 代码。
提前谢谢你。
Vue.js代码
var authorization = ...
axios.post(process.env.VUE_APP_URL + 'ms3/sign_in',
{
params: {
}
}, {
headers: {
'Access-Control-Allow-Origin': '*'
'Authorization': authorization
}
}).then(response => {
localStorage.setItem('ms3_user_token', response.headers.authorization)
}).catch(error => {
self.errorSignIn = error
self.erroredSignIn = true
}).finally(() => {
self.loading = false
})
烧瓶代码:
from flask import Flask
from flask_cors import CORS
...
app = Flask(__name__)
CORS(app, origins='*',
headers=['Content-Type', 'Authorization'],
expose_headers='Authorization')
...
@app.route("/ms3/sign_in", methods = ["POST", "OPTIONS"])
def ms3_sign_in():
# the header does not exist
auth_header = request.headers.get("Authorization")
if auth_header is None or not auth_header.startswith('Basic '):
return jsonify({ "message": "Invalid 'Authorization' header" }), 401
username, password = ...
encoded_jwt_token = auth_login(username, password)
resp = Response("Returned Token")
resp.headers['Authorization'] = encoded_jwt_token
return resp
感谢 Python Brasil 小组的 Allan 帮助了我。
我在 Vue.js 申请中需要添加“'Content-Type': 'application/json'”。
我将更新后的代码发送到下面以供将来帮助:
Vue.js代码
var authorization = ...
axios.post(process.env.VUE_APP_URL + 'ms3/sign_in',
{
params: {
}
}, {
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json', // <-- here
'Authorization': authorization
}
}).then(response => {
localStorage.setItem('ms3_user_token', response.headers.authorization)
}).catch(error => {
self.errorSignIn = error
self.erroredSignIn = true
}).finally(() => {
self.loading = false
})