Skip to main content
 首页 » 编程设计

javascript之如果调用是在 AJAX 中进行的,如何检测并仅允许特定的 url 访问 Flask API

2025年05月04日36zhwl

我为网站创建了一个 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,您需要实现身份验证。但这仍然不会限制他们访问它的方式。