【发布时间】:2020-05-02 03:17:49
【问题描述】:
我看到 .NET Core 3.x 带有一个新的特殊配置 AllowedHosts,用于列出允许访问该站点的主机,而 CORS (app.UseCors) 已经存在此选项。
这两个选项有什么区别?
【问题讨论】:
我看到 .NET Core 3.x 带有一个新的特殊配置 AllowedHosts,用于列出允许访问该站点的主机,而 CORS (app.UseCors) 已经存在此选项。
这两个选项有什么区别?
【问题讨论】:
根据documentation,allowedHosts 用于主机过滤以将您的应用绑定到特定主机名。例如,如果您替换以下内容:
"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 是控制哪些主机尝试访问您应用上的资源 (API)。
【讨论】:
example.com;localhost.
"AllowedHosts": "example.com" 到底有什么作用?比如它可以防止某种攻击吗?