【问题标题】:Difference between AllowedHosts in appsettings.json and UseCors in .NET Core API 3.xappsettings.json 中的 AllowedHosts 和 .NET Core API 3.x 中的 UseCors 之间的区别
【发布时间】:2020-05-02 03:17:49
【问题描述】:

我看到 .NET Core 3.x 带有一个新的特殊配置 AllowedHosts,用于列出允许访问该站点的主机,而 CORS (app.UseCors) 已经存在此选项。

这两个选项有什么区别?

【问题讨论】:

    标签: c# .net .net-core


    【解决方案1】:

    根据documentationallowedHosts 用于主机过滤以将您的应用绑定到特定主机名。例如,如果您替换以下内容:

    "AllowedHosts": "*"
    

    "AllowedHosts": "example.com"
    

    如果您尝试使用http://localhost:xxxx/ 地址访问您的应用程序,您将收到默认的错误请求 (400) 响应。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML>
    
    <HEAD>
        <TITLE>Bad Request</TITLE>
        <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">
        </ HEAD>
    
    <BODY>
        <h2>Bad Request - Invalid Hostname</h2>
        <hr>
        <p>HTTP Error 400. The request hostname is invalid.</p>
    </BODY>
    
    </HTML>
    

    因为主机过滤中间件不允许应用将应用绑定到除example.com 之外的任何其他主机名。

    CORS

    另一方面,CORS 是控制哪些主机尝试访问您应用上的资源 (API)。

    【讨论】:

    • 从技术上讲,CORS 不会禁止调用 API,但会禁止浏览器呈现响应。通话仍在进行中。
    • 我们可以将多个条目添加到允许的主机部分,以逗号分隔或其他方式吗?像“localhost,devserver.domain”之类的?
    • @Ak777 是的,你可以。该值是以分号分隔的主机名列表,没有端口号,例如example.com;localhost.
    • @TheVillageIdiot 这在什么情况下会有帮助?
    • "AllowedHosts": "example.com" 到底有什么作用?比如它可以防止某种攻击吗?
    猜你喜欢
    • 2022-01-07
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多