我在使用Asp核心Web API的Angular 4应用程序,我使用不同的端口在locahost上进行测试。我的WebApi需要Windows身份验证(需要获取登录用户名)。所有使用GET的调用工作,但不幸的是,我不能让POST工作。我对CORS的WebAPI设置:Asp.net Core CORS与GET协同工作,但不支持POST
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddDbContext<CatalogContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
services.AddMvc();
}
和角4客户端尝试发布文件
fileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
let file: File = fileList[0];
let formData: FormData = new FormData();
formData.append('uploadFile', file, file.name);
let headers = new Headers();
/** No need to include Content-Type in Angular 4 */
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers, withCredentials: true });
this.http.post("http://localhost:495/api//upload",formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
我的错误:
的XMLHttpRequest无法加载http://localhost:495/api//upload。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许访问原产地'http://localhost:4200'。响应有HTTP状态代码500。
和响应头
的Content-Length:0 日期:孙老师,2017年8月13日13时13分09秒GMT 持久验证:真 服务器:红隼 X -Powered-者:ASP.NET X-SourceFiles:= UTF-的8B QzpcU291cmNlIENvZGVcUGFydG5lcnNoaXBDYXRhbG9nXFBhcnRuZXJzaGlwQ2F0YWxvZ1xQYXJ0bmVyc2hpcENhdGFsb2cuV2ViQXBpXGFwaVx1cGxvYWQ = =
任何帮助,将不胜感激????!
检查http://enable-cors.org。它看起来像你添加Cors的方式不起作用。检查Chrome网络选项卡是否有http请求。单击请求查看请求和响应详细信息。而不是通过你的应用程序调用,检查与提琴手或铬扩展像邮递员或高级休息。您也可以尝试单独启用个别类,方法或web.config中的cors。 – Amit
请发布您的异常堆栈/消息。当发生ASP.NET Core中的异常时,异常中间件将**清除头文件**,因此CORS头文件会丢失。看看是什么导致异常并解决异常,那么它应该可以工作,发生异常时返回HTTP代码500 – Tseng
您可以确认'UserCors'在'Configure'方法中的任何'UseMvc'调用之前吗? – regnauld