我正在使用Web Core API並按如下方式設置CORS;在ASP.NET中,對預檢請求的響應未通過訪問控制檢查:沒有「Access-Control-Allow-Origin」標頭
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var url = Configuration["origenUrl"];
var header = "Content-Type";
app.UseCors(
options => options.WithOrigins(url).WithHeaders(header).AllowAnyMethod().AllowCredentials()
);
}
此設置適用於獲取請求。 但對於我的要求;
$.ajax({
url: url,
method: "PUT",
xhrFields: { withCredentials: true }
})
.done(callback)
//.fail(errorMessage);
.fail(function (jqXHR, textStatus, errorThrown) {
alert("Something went wrong: " + textStatus + " " + errorThrown);
errorCallback();
});
我得到這個錯誤信息;
XMLHttpRequest無法加載http://localhost:17972/api/fault/1/close。
對預檢請求的響應未通過訪問控制檢查:否 請求的 資源上存在「訪問控制允許來源」標頭。原因'http://localhost:12528'因此不允許 訪問。該響應具有HTTP狀態代碼401.
從Fiddler我的http請求是;
OPTIONS http://localhost:17972/api/fault/10/close HTTP/1.1
接受:/
訪問控制請求-方法:PUT
訪問控制 - 請求 - 標題:接受
UA-CPU:AMD64
接受編碼:gzip,放氣
的User-Agent:Mozilla的/ 5.0(Windows NT的10.0; Win64平臺; 64;三叉戟/ 7.0; RV:11.0)等壁虎
主機:本地主機:17972
的Content-Length:0
DNT:1個
連接:保持活動
附註:無緩存
那麼我該如何解決這個問題?
編輯 我也試過這段代碼只是爲了讓它工作,但我得到了同樣的錯誤;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//var url = Configuration["originUrl"];
//app.UseCors(
// options => options.WithOrigins(url).AllowAnyHeader().AllowAnyMethod().AllowCredentials()
//);
app.UseCors(
options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()
);
app.UseMvc();
}
您是否添加了內容類型? –
我將「Content-Type」放在標題變量中,然後將其包含在WithHeaders方法中,如代碼中所示。此後我嘗試了「AnyHeader()」,結果相同。 – arame3333
對不起,我沒有這麼解釋,我是在談論這個請求。你有一個原始的HTTP請求? –