[英]'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check:
[英]CORS: Response to preflight request doesn't pass access control check: It does not have HTTP ok status
我正在尝试做的事情以前工作得很好,我不知道发生了什么,也许他们在浏览器端更新了 CORS 政策
我正在尝试将文件上传到我的 ASP.NET 6 API,我的端点如下:
[HttpPost("uploadimage")]
public ActionResult<string> UploadImage(
[FromForm] IFormFile image,
[FromForm] int? days = 30,
[FromForm] MediaType? type = MediaType.AccountImage)
{
//do things
return url;
}
如果我尝试在 POSTMan 中调用它,它将正常工作并返回 URL。但是当我尝试从我的浏览器调用它时,我得到这个:
CORS 策略阻止了从来源“http://localhost:5126”访问“http://localhost:15040/api/media/uploadimage”:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态。
这是我的 CORS 中间件配置:
ctx.Response.Headers.Add("Access-Control-Allow-Origin", "*");
ctx.Response.Headers.Add("Access-Control-Allow-Methods", "*");
ctx.Response.Headers.Add("Access-Control-Allow-Headers", "append,delete,entries,foreach,get,has,keys,set,values,Authorization,Origin, Content-Type, X-Auth-Token,Accept, X-Requested-With, Access-Control-Request-Method, Access-Control-Request-Headers");
我检查了 postman,标头存在。 我在服务器中设置了一个断点,请求甚至没有被发送到服务器,断点没有命中并且没有调用该方法......
这是我从客户端上传文件的代码:
var form = await file.GenerateImageForm();
var uri = new Uri("HTTP://localhost:15040/api/media/uploadimage");
var req = new HttpRequestMessage
{
Method = HttpMethod.Post,
Content = form,
RequestUri = URI,
};
req.Headers.Add("Allow-control-allow-origin", "*");
var ret = await HttpClient.SendAsync(req);
如何将我的文件上传到我的服务器?
您实现它的方式与文档不同。
根据您提供的大量详细信息,很难说出哪里出了问题,但我最好的猜测是您没有在端点上实施OPTIONS
方法,导致它在飞行前失败。
对于文档中描述的选项,最好只使用 go,除非你有充分的理由不这样做:
builder.Services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
和
app.UseCors(MyAllowSpecificOrigins);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.