Jeeten Parmar
Jeeten Parmar

Reputation: 5757

Asp.net MVC API: CORS preflight channel did not succeed

I am using Asp.net MVC Web API for my website. I added below lines in web.config to prevent Cors issue. It is working fine for GET method but showing an error for all other request methods.

How do I solve this issue?

<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*"/> <add name="Access-Control-Allow-Headers" value="Content-Type,Accept"/> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/> </customHeaders> </httpProtocol>

Upvotes: 0

Views: 1926

Answers (3)

Mr Orange
Mr Orange

Reputation: 301

I'm a full beginner but:

initial Web.config

...      
<system.webServer>
    <handlers>
      <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>
</system.webServer>
...

I added <customHeaders> and deleted <remove name="OPTIONSVerbHandler"/>.

final Web.config

...        
<system.webServer>
        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="TRACEVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
        <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="http://localhost:3000" />
            <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" />
            <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
            <add name="Access-Control-Max-Age" value="1000" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
...

It worked for me.

Upvotes: 0

Jeeten Parmar
Jeeten Parmar

Reputation: 5757

I solved it by adding EnableCorsAttribute in WebApiConfig.
Source: https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Upvotes: 0

Rasitha Ariyarathna
Rasitha Ariyarathna

Reputation: 171

Try the following code or go through this link : Access-Control-Allow-Origin in ASP.Net MVC

Put all domains that have access to your web server in origin and in headers put all possible headers.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="http://localhost" />
      <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" />
      <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" />
      <add name="Access-Control-Max-Age" value="1000" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Upvotes: 2

Related Questions