ASP.NET Core Web API ile PUT ve DELETE için CORS Hatası Çözümü

Bugün yine .Net Core uygulama geliştirirken yaşadığım bir sorun üzerine bu makaleyi kendime not olarak ekleme gereksinimi duydum.

.Net Core Web Api uygulama geliştirirken CORS ayarlarını yapmama rağmen uygulamam localde çalışırken sunucuda CORS hatasına düşmekteydi. İnternetten araşttırdığımda ise aşağıdaki yöntemi buldu.

.Net’teki Web API varsayılan olarak yalnızca GET, POST, OPTIONS ve HEAD isteklerine izin verir. PUT ve DELETE’e izin vermek için, Web.Config dosyasından aşağıdaki değişiklikleri yaparak WebDAV işleyicisini ve modülünü istek kanalından kaldırmanız gerekir.

<system.webServer>
  .
  .
  .
  
  <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule"/>
    </modules>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Expose-Headers" value="Content-Type, Accept, expiry, uid, access-token, token-type" />
        <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
      </customHeaders>
    </httpProtocol>
  .
  .
  .
</system.webServer>

WebDAV öğesi, Internet Information Services (IIS) 7 veya üzeri için Web Distributed Authoring and Versioning (WebDAV) yapılandıran ayarları içerir. WebDAV, HTTP ve HTTPS bağlantıları üzerinden Web sitelerini düzenlemeyi sağlayan İnternet tabanlı bir açık standarttır. WebDAV nedeniyle 405 hata kodu alabilirsiniz.

Ayrıca, ExtensionlessUrlHandler-Integrated-4.0 işleyicisinin * ile tüm isteklere veya belirli istekler için manuel girişe izin vermesi gerekir. Bunun çalışması için minimum runtime versiyonu gereksinimi 4.0’dır.

CustomHeaders, Cors’u etkinleştirmenin bir parçasıdır. Lütfen Access-Control-Allow-Origin’in “*” karakterine izin vermemesi gerektiğini unutmayın(Yani tüm adreslerden gelen isteklere). Cors için izin verilmesi gereken belirli bir alan adı yazılmalıdır. Access-Control-Expose-Headers’ı kullanarak özel header türlerine izin verebilir ve Access-Control-Allow-Methods kullanarak belirli yöntemlere izin verebilirsiniz.

You may also like...