我有Asp.NET核心Web API應用程序,並試圖實現授權,但遇到CORS問題 - 我的開發服務和用戶界面主機在本地主機的不同端口上。Asp.NET核心:跨服務請求(預檢)返回代碼204而不是200
在登錄頁面我得到令牌並重定向到下一頁。此時數據請求服務啓動。但隨着狀態204服務器響應:沒有內容預檢請求...... 雖然預檢響應返回訪問控制允許來源:* ...
的Startup.cs樣子:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddCors(options =>
{
options.AddPolicy("Policy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddAuthorization();
services.AddMvc() // ...
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors("Policy");
app.UseMvc();
}
我錯過了服務器端的東西嗎? (在客戶端角度的攔截器只是添加授權標頭與令牌)
P.S.我使用VS代碼在OSX發展(儘管我想這並不重要)
UPDATE:
爲@tpeczek諫,我已經改變CORS配置:
options.AddPolicy("Policy",
builder => builder.WithOrigins("http://localhost:80", "http://localhost")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
但可以」牛逼擺脫錯誤更新2
:
我得到的錯誤是
XMLHttpRequest cannot load localhost:5000/api/<method-name>;. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost'; is therefore not allowed access. The response had HTTP status code 500.
但是,一旦我從控制器中刪除[Authorize]
屬性,它工作正常。所以問題在於令牌檢查?
更新3: 在意外刪除的問題的功能: - (現在工作
'204 NO CONTENT'您的控制器/中間件是否返回任何數據? –
@JoelHarkes中間件返回「await context.Response.WriteAsync(JsonConvert.SerializeObject(response,new JsonSerializerSettings {Formatting = Formatting.Indented}));」當獲得令牌時。去數據時,中間件不會返回任何東西。沒有到達控制器。我使用的唯一中間件是從https://stormpath.com/blog/token-authentication-asp-net-core – user1820686
得到的如果這仍然不起作用,請在問題中包含預檢請求標頭。 – tpeczek