ASP.NET 5 beta7 CORS无法正常工作

时间:2015-10-08 15:59:00

标签: asp.net cors asp.net-core

在OS X上使用VS Code。我正在尝试让CORS使用1.0.0-beta7。我不确定为什么它不起作用。通过“不工作”我的意思是我在我的javascript控制台中收到一条消息:“XMLHttpRequest无法加载{ommitedurl}。请求的资源上没有'Access-Control-Allow-Origin'标头。来源'{{因此,3}}'不允许访问。“我试图使用AllowAllOrigins方法,并使用WithOrigins方法指定一个或多个URL无济于事。如果重要的话,我将发布到Azure作为Web应用程序。我在下面列出了我的大部分代码。有人可以帮助我吗?

这是我的dnvm列表:

(defun my-c-mode-keywords ()
  (font-lock-add-keywords nil (list
    (list "[^_]\\([0-9]+\\)" '(1 'font-lock-warning-face))) 'prepend))

(add-hook 'c-mode-hook 'my-c-mode-keywords)

这是我的project.json依赖项:

dnvm list

Active Version              Runtime Arch Location             Alias
------ -------              ------- ---- --------             -----
       1.0.0-beta7          coreclr x64  ~/.dnx/runtimes      
       1.0.0-beta5          mono         ~/.dnx/runtimes      
  *    1.0.0-beta7          mono         ~/.dnx/runtimes      default
       1.0.0-beta8          mono         ~/.dnx/runtimes      
       1.0.0-rc1-15798      mono         ~/.dnx/runtimes      
       dnx-mono             mono         ~/.dnx/runtimes      
       dnx-mono.1.0.0-beta8 mono         ~/.dnx/runtimes      

这是我的Startup.cs

"dependencies": {
    "Microsoft.AspNet.Cors": "1.0.0-beta7",
    "Microsoft.AspNet.Mvc": "6.0.0-beta7",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
    "Microsoft.AspNet.WebApi.Client": "5.2.3",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
    "System.Net.Http": "4.0.1-beta-23225",
    "Newtonsoft.Json": "7.0.1"
}

我的控制器上也有EnableCors属性

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.ConfigureCors(options =>
        {
            options.AddPolicy("AllowPlnkr",
                builder =>
                {
                    builder.WithOrigins("http://run.plnkr.co");
                });
        });
        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory("AllowPlnkr"));
        });
        services.AddScoped<ITrackerRepository, TrackerRepository>();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc();
        app.UseCors("AllowPlnkr");
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }
}

1 个答案:

答案 0 :(得分:3)

代码非常接近工作。我只需稍微改变我的Startup.cs。我的根本问题是我的客户端代码错了。我尝试使用jQuery.ajax()并且它有效。感谢所有评论和帮助过我的人。

这是我的Startup.cs:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.ConfigureCors(options =>
        {
            options.AddPolicy("AllowPlnkr",
                builder =>
                {
                    builder.WithOrigins("http://run.plnkr.co");
                });
        });
        services.AddScoped<ITrackerRepository, TrackerRepository>();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc();
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }
}