Параметры заголовка запроса CORS не отправляются в Chrome

Я пытаюсь использовать Swagger UI для остальной документации API. API отдыха создан с помощью сервиса WCF. Я решил проблему cors, сервис принимает метод OPTIONS. Но запрос имеет параметр заголовка с именем SessionUUID, этот параметр не отправляется службе. Когда я отлаживаю сервисную сторону, этот параметр не приходит. Эта проблема только в Chrome. Chrome блокирует заголовочные параметры в запросе cors.

Решение проблемы Cors на WCF Service, как это;

  1. Я добавил новое поведение и параметры заголовка определены

    public class EnableCorsEndpointBehavior : BehaviorExtensionElement, IEndpointBehavior
    {
       ...
    
        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
        {
            var requiredHeaders = new Dictionary<string, string>();
    
            requiredHeaders.Add("Access-Control-Allow-Origin", "*");
            requiredHeaders.Add("Access-Control-Request-Method", "POST,GET,PUT,DELETE,OPTIONS");
            requiredHeaders.Add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, Accept-Language, SessionUUID, Origin, X-Custom-Header, sessionuuid");
            requiredHeaders.Add("Access-Control-Allow-Credentials", "true");
            endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new ServiceInspector(requiredHeaders));
        }    
       ...
      }
    
    1. Я добавил заголовки ответа в инспекторе. Параметр заголовка, который называется SessionUUID, проверяется в AfterReceiveRequest, но из-за этой проблемы он имеет значение null.

      public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext)
      {
          try
          {
      
      
              WebHeaderCollection headers = WebOperationContext.Current.IncomingRequest.Headers;
              string requestTo = request.Headers.To.ToString();
      
      
              if (!requestTo.Contains("login") && request.GetType().Name != "InternalByteStreamMessage")
              {
                  if (headers["SessionUUID"] == null)
                  {
                      throw new RestAppException("401", "Oturum bilgisi bulunamadı.");
                  }
                  else
                  {
                      DateTime requestDate = DateTime.Now;
                      string sessionUUID = headers["SessionUUID"] != null ? headers["SessionUUID"].AsString() : headers["sessionuuid"].AsString();
                      sessionManager.CheckSessionByUUID(sessionUUID, requestDate);
      
                      sessionManager.UpdateExpireDate(sessionUUID, requestDate);
                      sessionManager.SetSessionByUUID(sessionUUID);
                  }
              }
          }
          catch (RestAppException ex)
          {
              ex.Message = "İşlem Başarısız";
              throw ex;
          }
          catch (Exception ex)
          {
              throw ex;
          }
      
          return null;
      }
      
      public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
      {
          var httpHeader = reply.Properties["httpResponse"] as HttpResponseMessageProperty;
          foreach (var item in requiredHeaders)
          {
              httpHeader.Headers.Add(item.Key, item.Value);
          }
      }
      

Как я могу решить эту проблему Chrome?

2 ответа

Вам нужно будет добавить расширение Chrome, чтобы разрешить настраиваемые заголовки.

Вот некоторые из них, которые вы могли бы использовать:

  1. WebRequestAPI
  2. Заголовок мода

Если вы хотите попробовать Mozilla Firefox, используйте его расширение modify-headers.

У меня была похожая проблема . Это может быть связано с URL-адресом.

Моя проблема была решена, когда я ввел "www".

Если вы уже ввели с www, удалите это и попробуйте еще раз.

Другие вопросы по тегам