无法使CORS工作-.NET 4.7.2。收到CORS缺少允许来源的消息。

3
有许多在线资源描述如何在 .net web 应用程序中配置 CORS。但我还没有能够使任何东西工作起来。
这是我的 API 应用程序的当前配置:
  • Installed nuget Microsoft.AspNet.WebApi.Cors

  • updated WebApiConfig.cs:

    public static void Register(HttpConfiguration config) {

         var cors = new EnableCorsAttribute(origins: "*", headers: "*", methods: "*");
         config.EnableCors(cors);
         config.MapHttpAttributeRoutes();
    
         config.Routes.MapHttpRoute(
             name: "DefaultApi",
             routeTemplate: "api/{controller}/{action}/{id}",
             defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
         );
     }
    
我原以为以上内容足以让整个应用程序支持CORS,但实际上并不是这样的。 我在web.config中添加了以下内容:
<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
      </customHeaders>
    </httpProtocol>
    <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>

这也不起作用。
我为每个控制器添加了CORS修饰符:
namespace ABC_API.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ABCController : ApiController

这也没有起作用。
我正在尝试使用Intuit的QuickBooks API,并在尝试获取授权时收到以下CORS缺少允许来源错误:

enter image description here

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource 
at https://appcenter.intuit.com/connect/oauth2?client_id=ABkU7xzdcdsg1vSsKZ7NKZeypTST0EmnyvFhSNPMJM3NShYd5r&response_type
=code&scope=com.intuit.quickbooks.accounting&redirect_
uri=http%3A%2F%2Flocalhost%2FDW_QB_API%2Fapi%2Fauth&
state=e2543d40145e4eb30dbc4da099501d13aca48bc30b6529ad6af74acaae330581.
 (Reason: CORS header ‘Access-Control-Allow-Origin’ missing)

什么我错过了?

看起来QuickBooks正在使用OAuth 2.0。请参考以下链接:https://learn.microsoft.com/en-us/advertising/shopping-content/code-example-authentication-oauth?force_isolation=true - undefined
请检查一下!WebApi跨域请求被CORS策略阻止 - undefined
1个回答

0

ConfigureServices中的应用程序启动时配置CORS策略:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
    {
        builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader();
    }));
}

对于每个请求:

public void Configure(IApplicationBuilder app)
{
    app.UseCors("MyPolicy");

    //app.UseMvc called last
    app.UseMvc();
}

或者使用[EnableCors("MyPolicy")]将策略应用于控制器和操作。


2
我有一个global.asax.cs文件而不是startup.cs文件(.net 4.7.2) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接