был заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin» содержит несколько значений «*, *», но разрешено только одно - PullRequest
0 голосов
/ 15 мая 2019

У меня есть API входа в систему с использованием .net core 2.2, которое внезапно вернуло эту ошибку: Доступ к XMLHttpRequest в «https://hostname/users/authenticate' из источника» https://domain' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: «Access-Control-Allow-Origin» * Заголовок 1005 * содержит несколько значений '*, *', но допускается только одно.

сначала я получил эту ошибку: В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

затем в web.config я положил "add name =" Access-Control-Allow-Origin "value =" * "" как полный код ниже:

тогда я получил новую ошибку , о которой я спрашивал в этом посте "заголовок содержит несколько значений '*, *', но допускается только одно.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <directoryBrowse enabled="true" />
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS"/>
          <add name="Access-Control-Allow-Headers" value="Origin, Content-Type, Accept"/>
          <add name="Access-Control-Allow-Credentials" value="true" />
        </customHeaders>
      </httpProtocol>
      <rewrite>
        <rules>
          <rule name="Https ApiLogin Page"  stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
              <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
          </rule>
        </rules>
      </rewrite>
      <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDavModule" />
      </modules>
      <handlers>
        <remove name="OPTIONSVerbHandler" />
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

это мой: Запрос заголовка это мое: Startup.cs

что мне нужно сделать, чтобы исправить заголовок ", содержащий несколько значений '*, *', но разрешено только одно." ?

1 Ответ

1 голос
/ 15 мая 2019

Вы должны добавить базовую политику в свой API

поместите это поверх вашего контроллера

[EnableCors("SiteCorsPolicy")]

и это в вашем StartUp.cs

services.AddAuthorization(opts =>
        {
            opts.AddPolicy(
          name: ConstantPolicies.DynamicPermission,
          configurePolicy: policy =>
          {
              policy.RequireAuthenticatedUser();
              policy.Requirements.Add(new DynamicPermissionRequirement());
          });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...