【问题标题】:CORS : Response to preflight request doesn't pass access control checkCORS:对预检请求的响应未通过访问控制检查
【发布时间】:2019-09-09 03:46:57
【问题描述】:

它显示的 CORS 问题:

选项https://dev-01-api-apptracker2/Admin 401(未经授权)

从源“https://dev-01-web-apptracker2”对“https://dev-01-api-apptracker2/Admin”处的 XMLHttpRequest 的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。

但我想我已经在我的 ajax 代码中添加了一个标头 'Access-Control-Allow-Origin': '*',并尝试了很多方法来解决这些 CORS 问题,我设置了 dataType: 'json', crossDomain: true , and withCredentials: true, 并且还添加了不同的origin domain。但我仍然得到错误。 我不知道这是怎么回事,有没有人可以帮助我。谢谢!!

AddAdmin: function (callback, UserId) {
        $.ajax({
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'Access-Control-Allow-Headers': 'origin, X-Custom-Header',
                'Access-Control-Allow-Method': 'POST',
                'Access-Control-Allow-Origin': '*'
            },
            contentType: 'application/json',
            method: "POST",
            url: Services.APIBaseUrl + "Admin",
            dataType: 'json',
            crossDomain: true,
            data: JSON.stringify(UserId),
            xhrFields: {
                withCredentials: true
            },
            complete: function (data) {
                callback(data);
            }
        });
    },
public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("APIAllowedOriginsPolicy",
                builder =>
                {
                    builder.WithOrigins("https://dev-01-web-apptracker2",
                        "http://localhost:31474")
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials();
                });
            });
            services.Configure<MvcOptions>(options =>
            {
                options.Filters.Add(new CorsAuthorizationFilterFactory("APIAllowedOriginsPolicy"));
            });
            services.AddAuthentication(IISDefaults.AuthenticationScheme);

            // Add framework services.
            services
                .AddMvc()
                .AddJsonOptions(options =>
                {
                    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                });
        }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {

            //app.UseCors("APIAllowedOriginsPolicy");

            app.UseCors(builder =>
                builder.AllowAnyOrigin()
                        .AllowAnyMethod()
                        .AllowAnyHeader()
                        .AllowCredentials()
            );

            app.UseMvc();
        }

【问题讨论】:

    标签: ajax cors xmlhttprequest cross-domain


    【解决方案1】:

    我发现问题是因为 IIS 身份验证问题,它需要允许 CORS 的 windows auth 和匿名。

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 2017-11-09
      • 2017-04-28
      • 2016-06-05
      相关资源
      最近更新 更多