Asp.net MVC API:CORS 预检通道未成功



我正在为我的网站使用Asp.net MVC Web API。我在web.config中添加了以下行以防止Cors问题。它适用于GET方法,但显示所有其他请求方法的错误。

如何解决此问题?

<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>

尝试以下代码或通过此链接: ASP.Net MVC 中的访问控制允许原点

将所有有权访问您的 Web 服务器的域放在源头和标头中,将所有可能的标头放在标题中。

<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>

我通过在WebApiConfig中添加EnableCorsAttribute来解决它。
来源: https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

我是一个完整的初学者,但是:

初始 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>
...

我添加了<customHeaders>并删除了<remove name="OPTIONSVerbHandler"/>.

最终的 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>
...

它对我有用。

相关内容

  • 没有找到相关文章