Проблемы Cross Origin при доступе к нескольким веб-интерфейсам - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю над проектом, который требует от меня доступа к четырем (4) Web Api из углового 6-го внешнего приложения.есть API, предназначенный для аутентификации пользователя, еще один - для информации о клиенте, другой - для информации о поставщике и его предложениях, а последний API - для мониторинга проекта.Я реализовал cors на всех 4 API, но проблема заключается в том, что API-интерфейсы аутентификации другие apis отвечают перекрестной ошибкой.Вот ошибка.

введите описание изображения здесь Вот ошибка, которая у меня есть

   <handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="POST,GET,PUT,PATCH,DELETE,OPTIONS" />
    <add name="Access-Control-Allow-Credentials" value="true" />
    <add name="Access-Control-Allow-Headers" value="Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name" />
  </customHeaders>
</httpProtocol>

вышеупомянутая конфигурация зарегистрирована во всех файлах web.config4 API.

Я пытался настроить его на WebAppConfig.cs следующим образом:

 public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors();

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

У меня была та же самая ошибка кросса, тогда я пытался реализовать политику ICorsPolicyProvider, и она все еще имела ту же ошибку

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false)]
public class CustomCorsPolicyAttribute : Attribute, ICorsPolicyProvider
{
    CorsPolicy policy;  

   public  CustomCorsPolicyAttribute()
    {
        policy = new CorsPolicy
        {
            AllowAnyHeader = true,
            AllowAnyMethod = true
        };
        var allowedOrigins = ConfigurationManager.AppSettings["AllowedOrigins"].Split(',');
        foreach(var item in allowedOrigins)
        {
            policy.Origins.Add(item);
        }


    }


    public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        return Task.FromResult(policy);
    }
}

Пожалуйста, кто-нибудь может мне сказать, в чем может быть проблема и решение.Я буду очень признателен за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...