C# 上载文件时cors和jquery出现问题
我正在尝试向我正在开发的系统上的API发送一个文件。前端使用jquery,而后端使用C#(.netcore) 我已经在后端启用了CORS,一切正常。上传在localhost中工作正常,但是当我在实际服务器上尝试时,我得到了这个CORS错误 如何发送数据:C# 上载文件时cors和jquery出现问题,c#,jquery,ajax,asp.net-core,C#,Jquery,Ajax,Asp.net Core,我正在尝试向我正在开发的系统上的API发送一个文件。前端使用jquery,而后端使用C#(.netcore) 我已经在后端启用了CORS,一切正常。上传在localhost中工作正常,但是当我在实际服务器上尝试时,我得到了这个CORS错误 如何发送数据: $('#input-upload').change(function(event) { self.form = new FormData(); self.f
$('#input-upload').change(function(event) {
self.form = new FormData();
self.form.append('arquivo', event.target.files[0]);
$.ajax(
{
url: ControleDePagamentosModel.getUploadUrl(self.selected),
data: self.form,
processData: false,
contentType: false,
type: 'POST'
})
.done(function(data)
{
console.log(data);
if (data.error)
{
alert(data.message);
}
else if (data.message)
{
alert(data.message);
}
})
.fail(function()
{
alert("Erro de comunicação com o servidor de dados!");
});
});
服务器终结点:
[HttpPost]
[Route("upload/{id}/{username}")]
public async Task<ResponseDTO> UploadFGTSAsync([FromForm] IFormFile arquivo, int id, string username)
{
string path = "";
if (arquivo !=null && arquivo.Length > 0)
{
...
[HttpPost]
[路由(“上传/{id}/{username}”)]
公共异步任务上载fgtsasync([FromForm]ifformfile-arquivo,int-id,字符串用户名)
{
字符串路径=”;
如果(arquivo!=null&&arquivo.Length>0)
{
...
编辑:我的CORS配置:
public void ConfigureServices(IServiceCollection services)
{
services.AddRouting();
services.AddCors(o => o.AddPolicy("apiPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddMvc().AddNewtonsoftJson(
options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
options.SerializerSettings.MaxDepth = 1;
}
);
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "EmccampAPI", Version = "v1" });
});
services.Configure<IISOptions>(o =>
{
o.ForwardClientCertificate = false;
});
services.AddHttpClient();
services.AddDbContext<DBCONTROLEMPContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ControlEmp")));
//services.AddDbContext<RMContext>(options => options.UseSqlServer(Configuration.GetConnectionString("RM")));
services.AddTransient<IConfigService, ConfigService>();
}
public void配置服务(IServiceCollection服务)
{
services.AddRouting();
services.AddCors(o=>o.AddPolicy(“apiPolicy”,builder=>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddMvc().AddNewtonsoftJson(
选项=>
{
options.SerializerSettings.ReferenceLoopHandling=ReferenceLoopHandling.Ignore;
//options.SerializerSettings.NullValueHandling=NullValueHandling.Ignore;
options.SerializerSettings.MaxDepth=1;
}
);
services.AddControllers();
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新OpenApiInfo{Title=“EmccampAPI”,Version=“v1”});
});
服务配置(o=>
{
o、 ForwardClientCertificate=false;
});
services.AddHttpClient();
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“ControlEmp”));
//services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“RM”));
services.AddTransient();
}
请注意,所有其他请求都有效
我已经在后端启用了CORS,一切正常。在localhost中上载可以正常工作,但是当我在实际服务器上尝试时,我得到了这个CORS错误
请注意,所有其他请求都有效
要解决此问题,请尝试将策略显式应用于该特定端点,如下所示
[EnableCors("apiPolicy")]
[HttpPost]
[Route("upload/{id}/{username}")]
public async Task<ResponseDTO> UploadFGTSAsync([FromForm] IFormFile arquivo, int id, string username)
{
//...
您启用的cors设置是什么?!试试这个!$.ajax({url:controledepagmentosmodel.getUploadUrl(self.selected),data:self.form,processData:false,contentType:false,type:'POST',headers:{“接受”:“应用程序/json”,“访问控制允许来源”:“*”})不起作用。请注意,所有其他请求都起作用,我已从所有来源、方法和标题启用了CORS。我怀疑这与内容类型有关,但如果我不使用
contentType:false
,它会给我一个400错误。您好@ReisAlex,您尝试过我共享的解决方案吗?
<requestFiltering>
<requestLimits maxAllowedContentLength="90000000" />
</requestFiltering>