我之前嘗試做的作業正常,我不知道發生了什么,也許他們在瀏覽器端更新了 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:15040/api/media/uploadimage”獲取從“http://localhost:5126”獲取的訪問權限:對預檢請求的回應未通過訪問控制檢查:它沒有 HTTP ok 狀態。
這是我的 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");
我檢查了郵遞員,并且標題存在。我在服務器中設定了一個斷點,請求甚至沒有被發送到服務器,斷點沒有命中并且方法沒有被呼叫......
這是我從客戶端上傳檔案的代碼:
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);
如何將我的檔案上傳到我的服務器?
uj5u.com熱心網友回復:
您實作它的方式與docs不同。
根據您提供的大量詳細資訊,很難判斷出了什么問題,但我最好的猜測是您沒有OPTIONS在端點上實作一個方法,導致它在飛行前失敗。
最好只選擇檔案中描述的選項,除非您有充分的理由不這樣做:
builder.Services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
和
app.UseCors(MyAllowSpecificOrigins);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/430002.html
上一篇:在PHP中使用Salt的SHA256散列與C#中的不同
下一篇:學生卷號生成并存盤在資料庫中
