在ASP.NET和ASP.NET核心中禁用访问控制允许来源

rm5edbpk  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(212)

我们刚刚进行了一个外部笔测试,我们所有的网站都返回了一个低警告,说明我们允许跨网站脚本。我不认为这是实际情况,因为我们必须特别允许它在一个特定网站的一个页面上工作。
报告显示,当调用我们的URL的访问控制允许起源的头部设置为 *。使用 Postman 我可以得到同样的结果。

这将从ASP.NET Web窗体应用程序以及新的ASP.Net6Razor页面应用程序返回相同的结果。是否有任何方法可以删除此标头?可能是IIS中的某些内容?

kwvwclae

kwvwclae1#

要摆脱它,你必须列出所有允许发送请求到你的端点的来源。如果你正在运行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>

相关问题