Javascript 否';访问控制允许原点';标题已存在。XmlHttpRequest

Javascript 否';访问控制允许原点';标题已存在。XmlHttpRequest,javascript,asp.net-core,cors,xmlhttprequest,Javascript,Asp.net Core,Cors,Xmlhttprequest,我得到了XmlHttpRequest对象,我正试图将长html数据字符串发送到Asp Net核心,以生成内容PDF文件。但仍然得到CORS政策。尽管我的标题中有“访问控制允许来源”,但这对我来说仍然是一个问题。已经用CORS试过了。已安装Asp net Core的cors,未发生任何更改。如果我使用本地的HTML文档,一切正常 完全错误: 从访问位于“?”的XMLHttpRequest 起源'https://...'已被CORS策略阻止:响应 飞行前请求未通过访问控制检查:否 “Access C

我得到了XmlHttpRequest对象,我正试图将长html数据字符串发送到Asp Net核心,以生成内容PDF文件。但仍然得到CORS政策。尽管我的标题中有“访问控制允许来源”,但这对我来说仍然是一个问题。已经用CORS试过了。已安装Asp net Core的cors,未发生任何更改。如果我使用本地的HTML文档,一切正常

完全错误:

从访问位于“?”的XMLHttpRequest 起源'https://...'已被CORS策略阻止:响应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源

函数infoWindowPdf()
{
//创建请求
让http=new XMLHttpRequest();//XMLHttpRequest XDomainRequest
让url=backend+“getInfoWindowPdf?”;
//加载项htmlContent标头
让htmlContent=“”+样式+”;
//获取所需内容
让infoWindow=document.querySelector(“节库模式”);
//打开并删除创建的临时文件后,等待后端创建文件
http.onreadystatechange=函数()
{
如果(http.readyState==4)
{
window.open(backend+'InfoPdf?filePath=C:\\Projects\\Web\\WebSections\\wkhtmltopf\\bin\\pdf export\\'+sectionName+“.pdf”,“\u blank”);
setTimeout(()=>{getDBData('removepdf?filePath=C:\\Projects\\Web\\WebSections\\wkhtmltopf\\bin\\pdf export\\\\\&filename='+sectionName);},100);
}
};
http.open(“POST”,url,true);
http.setRequestHeader('Access-Control-Allow-Origin','*');
http.setRequestHeader('Content-type','application/x-www-form-urlencoded');//application/x-www-form-urlencoded
http.send(params);
}
我的Asp Net Core CORS启动配置

readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

  public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(MyAllowSpecificOrigins,
            builder =>
            {
                builder.WithOrigins("http://localhost:5000",
                                    "http://localhost:5000/websections/getInfoWindowPdf?"
                                    ).AllowAnyHeader().AllowAnyMethod();
            });
        });

        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseCors(MyAllowSpecificOrigins);

        //app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
只读字符串MyAllowSpecificCorigins=“\u MyAllowSpecificCorigins”;
public void配置服务(IServiceCollection服务)
{
services.AddCors(选项=>
{
options.AddPolicy(MyAllowSpecificCorigins,
生成器=>
{
建筑商。来源(“http://localhost:5000",
"http://localhost:5000/websections/getInfoWindowPdf?"
).AllowAnyHeader().AllowAnyMethod();
});
});
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
app.UseHsts();
}
应用程序UseCors(MyAllowSpecificCorigins);
//app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(路由=>
{
routes.MapRoute(
名称:“默认”,
模板:“{controller=Home}/{action=Index}/{id?}”);
});
}
编辑: 如果希望向后端项目发送一些数据,甚至不要尝试使用Xmlhttprequest。直接使用后端

  • 安装CORS nuget包。
    Install-Package Microsoft.AspNetCore.Cors
  • 在ConfigureServices中添加CORS服务

    public void ConfigureServices(IServiceCollection services)
    {
      services.AddCors();
    }
    
  • 在Startup.cs文件的配置方法中

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseCors(
            options => options.WithOrigins("http://example.com").AllowAnyMethod()
        );
        app.UseMvc();
    }
  • 安装CORS nuget包。
    Install-Package Microsoft.AspNetCore.Cors
  • 在ConfigureServices中添加CORS服务

    public void ConfigureServices(IServiceCollection services)
    {
      services.AddCors();
    }
    
  • 在Startup.cs文件的配置方法中

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseCors(
            options => options.WithOrigins("http://example.com").AllowAnyMethod()
        );
        app.UseMvc();
    }

  • 几天前我也遇到过同样的问题。事实证明,这不是CORS的问题;但这就是治疗方法。在我的例子中,我还没有开始asp.net核心项目(是的,我有时很笨)。不要认为这是CORS以外的东西。如果我从本地打开HTML文件,我的按钮就会工作。但是如果从Asp打开相同的HTML,会出现此错误。在.net核心应用程序中,您的CORS策略是什么?您应该在startup.cs中有一些内容和/或设置策略的扩展。您的请求中不应包含任何不需要的内容。已编辑我的帖子。尽管您对其进行了截断,但您的错误消息显示您的源代码从
    https://
    开始,但您允许的所有源代码都从
    http://
    开始。你似乎只是在你的可接受来源列表中输入了一个错误。我几天前也遇到过同样的问题。事实证明,这不是CORS的问题;但这就是治疗方法。在我的例子中,我还没有开始asp.net核心项目(是的,我有时很笨)。不要认为这是CORS以外的东西。如果我从本地打开HTML文件,我的按钮就会工作。但是如果从Asp打开相同的HTML,会出现此错误。在.net核心应用程序中,您的CORS策略是什么?您应该在startup.cs中有一些内容和/或设置策略的扩展。您的请求中不应包含任何不需要的内容。已编辑我的帖子。尽管您对其进行了截断,但您的错误消息显示您的源代码从
    https://
    开始,但您允许的所有源代码都从
    http://
    开始。您似乎只是在可接受来源的列表中输入了一个错误。尝试了您的确切变体,即使我以前也尝试过,仍然会出现相同的错误。如果您使用chrome,您是否可以在发送请求后看到“网络”选项卡中有哪些请求/响应标题?等等,“响应”选项卡不包含任何内容,并且根本没有响应标题,只有请求头测试了您的确切变体,即使我以前尝试过,仍然会得到相同的错误。如果您使用chrome,在发送请求后,您能看到“网络”选项卡中存在哪些请求/响应头吗?等等,响应选项卡不包含任何内容,然后我看到了