我为网站创建了一个 flask API,其中前端 AJAX 通过同一域上的 POST 请求调用 API。
但 API 不 protected ,因为任何人都可以使用参数(在 JS AJAX 中可见)发起 POST 请求并获得响应。
我想通过只允许某些特定的 url 访问我的 Flask API 来保护这一点。 我应该如何在我的 Python 代码中执行此操作?
示例
示例情况 - python
@app.route('/', methods=['GET','POST'])
def post():
if request.method == 'POST':
return "This is Post"
return render_template("index.html")
Ajax
$.ajax({
type: 'POST',
url: "https://www.example.com/",
//Something ....
所以在这里https://www.example.com/是站点,GET 请求返回 index.html 页面的站点。但在 POST 请求时,它返回“This is post”。考虑到要从 AJAX 发起的 POST 请求,我应该如何只允许 https://www.example.com/得到回应?
谢谢
请您参考如下方法:
无法要求使用特定客户端或从特定位置访问页面。所有指示的信息都可以轻松设置为您要查找的任何值。例如,如果您选中了 request.host,则用户可以使用 Python 请求来设置 Host header :
requests.get('http://localhost:5000', headers={'Host': 'example.com'})
如果您想限制谁可以访问您的 API,您需要实现身份验证。但这仍然不会限制他们访问它的方式。
