2014-05-13 91 views
5

我已經創建了個人賬戶的安全性一個asp.net網頁API分2次服。我試圖把它形成AngularJs按照本例: http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En 不能得到這工作,所以增加從這裏一些配置: How to make CORS Authentication in WebAPI 2?asp.net網頁API 2 CORS和認證授權配置

,不能突破這個錯誤: 的XMLHttpRequest不能加載「 serverRegisterUrl」。 「Access-Control-Allow-Origin」標題包含多個值'clientUrl,*,*', ,但只允許一個值。因此不允許訪問原產地'clientUrl'。

我不明白此錯誤消息。我認爲Access-Control-Allow-Origin字符串意味着允許原始clientUrl,所有頭文件,所有方法

我不明白這個問題。如果我應該只在某處指定原點,我不知道它在哪裏。

我在Microsoft Azure上運行此操作,並使用vs express for web 2013 update 2以防萬一。

不幸的是我不得不把我的鏈接帶出錯誤信息,因爲我需要至少聲譽10在這裏發佈多個2個鏈接的問題。

+0

在你的API集'訪問控制允許來源:*',它應該在我的API的web.config工作 – Sebastian

+1

我有這樣的: –

+0

<添加名稱=「訪問控制-Illow-Origin「value =」*「/> 不起作用 –

回答

0

看來你的Access-Control-Allow-Origin值是clientUrl, *, *這可能是無效的。它只允許一個值。你可以把*表示允許所有的來源,或者你指定的來源,例如你的AngularJS主機。

我把我的代碼放在https://gist.github.com/shaunxu/8414a78cd8074432fc69 這可能不是東方的方式,但它在我的應用程序中起作用。

+0

謝謝你的代碼。根據我如何配置它的情況,我得到:500(內部服務器錯誤)或No'Access-Control-Allow-Origin'標題出現在請求的資源上。我要弄清楚如何在Azure中跟蹤/記錄我的服務,因爲我不知道這500個錯誤背後是什麼,我認爲在我開始使用您的課程之前,我在某些情況下會生成它們。 –

+0

這絕對是一個天藍色的東西。我的代碼在本地工作,在azure中發生500錯誤,將不得不添加錯誤日誌記錄。 –

9

我得到它的工作,我認爲它來到了配置。 Web.config中:沒有 「訪問控制允許來源」 customHeaders節點

Startup.Auth.cs:
// This must come first to intercept the /Token requests app.UseCors(CorsOptions.AllowAll);

// Enable the application to use bearer tokens to authenticate users app.UseOAuthBearerTokens(OAuthOptions);

WebApiConfig.cs:(未使能cors here) //var cors = new EnableCorsAttribute("*", "*", "*"); //config.EnableCors(cors);

個AccountController.cs: 屬性上GetExternalLogin方法: [EnableCors(origins: "*", headers: "*", methods: "*")]


我覺得這是我的整個目前CORS配置。

+0

這對我有用。太棒了,謝謝你。 –

4

只需加入@ AlexSmotritsky的答案。

爲了讓方法

app.UseCors(CorsOptions.AllowAll); 

記得安裝Microsoft.Owin使用UseCors的。Cors NuGet封裝並添加使用Microsoft.Owin.Cors的

;指令。