【问题标题】:Why vscode's extension REST client can access my api?为什么 vscode 的扩展 REST 客户端可以访问我的 api?
【发布时间】:2021-09-16 00:28:57
【问题描述】:

我的服务器中运行着一个 django 应用程序。在该应用程序中,我使用django-cors-headers 来保护我的 api 免受其他来源的影响,除了我通过这样做设置的来源:

# settings.py

CORS_ALLOWED_ORIGINS = [
   'http://localhost:3000'
]

当我用 http://127.0.0.1:5500 等其他来源对其进行测试时,它给出了 cors 错误,这就是我想要的。

但是当我使用名为 REST Client 的 vscode 扩展来访问我的 api 时,它可以正常工作。

我怎样才能保护我的 api 免受这种影响?我对所有这些事情都很陌生,所以也许有些事情我不知道。谢谢你。

【问题讨论】:

    标签: django django-rest-framework django-cors-headers


    【解决方案1】:

    CORS 标头不会阻止访问您的 API。它只告诉浏览器它应该允许哪些跨域请求。

    唯一能够从 VS Code REST 客户端扩展程序访问您的 API 的事情是,它不尊重 CORS 标头(它不应该这样做,因为它不是浏览器)。

    【讨论】:

    • 那么我怎样才能保护我的 api 不受它的影响呢?所以如果有人知道我的 api 那么他可以做他想做的事吗?
    • 通常您需要将authentication 添加到您的 API 中,这样只有拥有秘密令牌或密码的用户才能访问您的 API。如果您想限制对您的 API 的访问仅限于某些 IP 地址,您可以在负载均衡器(例如 Nginx)或 Django(使用像 this 这样的包)中将它们列入白名单。
    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 2012-11-06
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多