當我在我的web.config像下面的配置CORS,每一件事情的工作:多CORS爲GET而不是工作PUT/POST與飛行前的請求的Web API 2
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:3000"/>
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="accept, cache-control, credentials, content-type, authorization, origin, X-Requested-With, X-dev-mode"/>
</customHeaders>
然而,當我嘗試讓這樣多CORS:
// Filename: Global.asax.cs
protected override void Application_Start()
{
ApiConfig.Register(GlobalConfiguration.Configuration);
}
// Filename: ApiConfig.cs
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("http://localhost:3000,http://someOtherUrl.com/", "*", "*");
config.EnableCors(cors);
}
它爲GET(即獲取內容等),但使用POST/PUT時(即保存的內容等),它提供了在瀏覽器這個錯誤(鉻)控制檯
提取API無法加載http://localhost:56214/api/1/content/SAVE。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問原產地'http://localhost:3000'。如果一個不透明的響應滿足您的需求,請將請求的模式設置爲'no-cors'來取消禁用CORS的資源。
該請求在OPTIONS上失敗。請注意,我有自定義處理程序,我的路線也配置。 還有一件事要提的是,保存內容的PUT/POST調用是通過反應的ajax調用。這可能是一個問題嗎?