2017-09-17 48 views
1

我有一個dot net核心API在本地主機上運行:5000。 我已經添加點網核心api與CORS仍拒絕請求

services.AddCors(); 

到ConfigureServices方法,並

app.UseCors(builder => builder.WithOrigins("http://localhost:3000") 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

在啓動時的配置方法。

我已經得到了嘗試

return fetch('http://localhost:5000/api/Authorization', { 
method: 'POST', 
headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json', 
}, 
body: JSON.stringify({ 
    UserName: userName, 
    Password: password, 
})}).then((response) => response.json()) 
    .then((responseJson) => {return responseJson.userIsAdmin}); 
} 

一個js客戶端,但去年被執行時,瀏覽器拒絕,說:

否「訪問控制允許來源」標題出現在請求的 資源中。原因'http://localhost:3000'因此不允許 訪問。該響應具有HTTP狀態碼500.

研究指向上述API項目中已經實施的解決方案。我錯過了什麼?

+0

在你的'StartUp.cs'中,Add/UseMvc之前還是之後有Add/UseCors?它需要在之前。 –

+0

*「響應的HTTP狀態碼爲500」*這是問題中引用的消息的唯一重要部分。這不是一個CORS錯誤;它只是看起來像一個,因爲服務器不會將'Access-Control-Allow-Origin'頭添加到500個錯誤響應 - 它可能只會將其添加到2xx成功響應。所以500表示你根本沒有CORS問題,而是一些服務器端故障。這是你需要確定原因和修復的實際問題:服務器說有一些致命的錯誤 - 服務器端故障 - 並且它已經完全停止工作,變得不可用 – sideshowbarker

回答

0

您僅限於特定來源:builder.WithOrigins("http://localhost:3000"),這表示您的應用的請求源只能是http://localhost:3000,然後允許任何來源。

先從CORS限制最少的工作數量和從那裏:

app.UseCors(builder => builder 
      .AllowCredentials() 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

更多信息請參見this guide

0

您是否將標誌添加到控制器?將EnableCors標誌添加到您的授權控制器。

[EnableCors] 
public class AuthorizationController