2014-05-13 18 views
5

Tôi đã tạo một dịch vụ api 2 web asp.net với bảo mật tài khoản cá nhân. Tôi đang cố gắng gọi nó là hình AngularJs theo ví dụ này: http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En không thể nhận được rằng để làm việc nên thêm một số cấu hình từ đây: How to make CORS Authentication in WebAPI 2?asp.net web api 2 CORS và cấu hình ủy quyền xác thực

và không thể vượt qua lỗi này: XMLHttpRequest không thể tải ' serverRegisterUrl '. Tiêu đề 'Access-Control-Allow-Origin' chứa nhiều giá trị của khách hàng, *, * ', nhưng chỉ có một giá trị được phép. Do đó, 'clientUrl' nguồn gốc không được phép truy cập.

Tôi không hiểu thông báo lỗi này. Tôi nghĩ rằng chuỗi Access-Control-Allow-Origin có nghĩa là cho phép clientUrl gốc, tất cả các tiêu đề, tất cả các phương thức

Tôi không hiểu vấn đề. Nếu tôi phải chỉ định nguồn gốc một mình ở đâu đó, tôi không biết nó ở đâu.

Tôi đang chạy tính năng này trên Microsoft Azure và sử dụng vs express cho web 2013 cập nhật 2 chỉ trong trường hợp nó quan trọng.

Tôi không may phải lấy liên kết của tôi ra khỏi thông báo lỗi vì tôi cần ít nhất 10 danh tiếng ở đây để đăng thêm 2 liên kết trong một câu hỏi.

+0

trong tập API của bạn 'Access-Control-Allow-Origin: *' và nó cũng làm việc – Sebastian

+1

Tôi có điều này trong api web.config của tôi: –

+0

không hoạt động –

Trả lời

0

Dường như giá trị Access-Control-Allow-Origin của bạn là clientUrl, *, * có thể không hợp lệ. Nó chỉ cho phép một giá trị. Bạn có thể đặt * nghĩa là tất cả các nguồn gốc được cho phép, hoặc được chỉ định, ví dụ như máy chủ AngularJS của bạn.

Tôi đã đặt mã của mình tại https://gist.github.com/shaunxu/8414a78cd8074432fc69 Đây có thể không phải là cách phía đông nhưng nó hoạt động trong ứng dụng của tôi.

+0

Cảm ơn bạn đã nhập mã. Tùy thuộc vào cách tôi định cấu hình mọi thứ xung quanh, tôi nhận được: 500 (Lỗi Máy chủ Nội bộ) hoặc không có tiêu đề 'Access-Control-Allow-Origin' trên tài nguyên được yêu cầu. Tôi sẽ tìm ra cách để theo dõi/đăng nhập dịch vụ của tôi trong Azure như tôi không biết những gì đằng sau những lỗi 500 và tôi nghĩ rằng tôi đã tạo ra chúng trong một số trường hợp trước khi tôi bắt đầu sử dụng lớp học của bạn là tốt. –

+0

điều này chắc chắn là một điều tuyệt vời. mã của tôi hoạt động cục bộ, 500 lỗi xảy ra ở độ cao, sẽ phải thêm lỗi ghi nhật ký. –

9

Tôi làm việc đó, tôi nghĩ nó đã bị hỏng. Web.config: không có "Access-Control-Allow-Origin" customHeaders nút

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: (không cho phép cors here) //var cors = new EnableCorsAttribute("*", "*", "*"); //config.EnableCors(cors);

AccountController.cs: thuộc tính trên phương pháp GetExternalLogin: [EnableCors(origins: "*", headers: "*", methods: "*")]


Tôi nghĩ đó là toàn bộ hiện CORS cấu hình của tôi.

+0

Điều này làm việc cho tôi. Tuyệt vời, cảm ơn bạn. –

4

Chỉ cần thêm vào câu trả lời của @ AlexSmotritsky.

Để tận dụng các UseCors phương pháp trong

app.UseCors(CorsOptions.AllowAll); 

nhớ để cài đặt các Microsoft.Owin.Gói Cors NuGet và thêm

bằng Microsoft.Owin.Cors; chỉ thị.

Các vấn đề liên quan