在 ASP.Net 和 ASP.Net 核心中禁用 Access-Control-Allow-Origin
Disable Access-Control-Allow-Origin in ASP.Net and ASP.Net Core
我们刚刚进行了外部笔测试,我们所有的网站都返回了一个低警告,说明我们允许跨站点脚本。
我认为实际情况并非如此,因为我们必须特别允许它在一个特定站点的一页上才能正常工作。
报告显示,当调用我们的 URL 时,Access-Control-Allow-Origin 的 header 设置为 *。
使用 Postman 我可以获得相同的结果。
这从 ASP.Net 网络表单应用程序和新的 ASP.Net 6 Razor 页面应用程序返回相同的结果。
有什么办法可以删除这个 header 吗?
也许是 IIS 中的某些东西?
要摆脱它,您必须列出所有允许将请求发送到您的端点的来源。如果您是 运行 ASP.NET 核心应用程序,那么您必须像这样配置 CORS 中间件:
// Startup.ConfigureServices() method
// For example only, put these values in the appsettings.json so they could be overridden if you need it
var corsAllowAnyOrigin = false;
var corsAllowOrigins = new string[]{ "https://*.contoso.com", "https://api.contoso.com" };
// Configuring CORS module
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
if (apiConfiguration.CorsAllowAnyOrigin)
{
builder.AllowAnyOrigin();
}
else
{
builder.WithOrigins(apiConfiguration.CorsAllowOrigins);
}
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
对于您的 Web 窗体应用程序,您可以安装 IIS CORS 模块并在 web.config
文件中配置它,如下所示:
<?xml version="1.0"?>
<configuration>
<system.webServer>
<cors enabled="true">
<add origin="*" allowed="false"/>
<add origin="https://*.contoso.com" allowCredentials="false" />
<add origin="https://api.contoso.com" allowCredentials="true" />
</cors>
</system.webServer>
</configuration>
我们刚刚进行了外部笔测试,我们所有的网站都返回了一个低警告,说明我们允许跨站点脚本。 我认为实际情况并非如此,因为我们必须特别允许它在一个特定站点的一页上才能正常工作。
报告显示,当调用我们的 URL 时,Access-Control-Allow-Origin 的 header 设置为 *。 使用 Postman 我可以获得相同的结果。
这从 ASP.Net 网络表单应用程序和新的 ASP.Net 6 Razor 页面应用程序返回相同的结果。 有什么办法可以删除这个 header 吗? 也许是 IIS 中的某些东西?
要摆脱它,您必须列出所有允许将请求发送到您的端点的来源。如果您是 运行 ASP.NET 核心应用程序,那么您必须像这样配置 CORS 中间件:
// Startup.ConfigureServices() method
// For example only, put these values in the appsettings.json so they could be overridden if you need it
var corsAllowAnyOrigin = false;
var corsAllowOrigins = new string[]{ "https://*.contoso.com", "https://api.contoso.com" };
// Configuring CORS module
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
if (apiConfiguration.CorsAllowAnyOrigin)
{
builder.AllowAnyOrigin();
}
else
{
builder.WithOrigins(apiConfiguration.CorsAllowOrigins);
}
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
对于您的 Web 窗体应用程序,您可以安装 IIS CORS 模块并在 web.config
文件中配置它,如下所示:
<?xml version="1.0"?>
<configuration>
<system.webServer>
<cors enabled="true">
<add origin="*" allowed="false"/>
<add origin="https://*.contoso.com" allowCredentials="false" />
<add origin="https://api.contoso.com" allowCredentials="true" />
</cors>
</system.webServer>
</configuration>