HTTP Post to Web API 2 - 收到并处理选项请求,不再收到任何请求

Ben*_*rpe 17 c# asp.net-mvc angularjs asp.net-web-api2

我有一个使用MVC和AngularJS的Web应用程序,它连接到Web API 2 api,我在一个单独的项目中设置.

目前,我能够从Api中检索信息,没有任何问题.

然而,当我尝试做一个HTTP Post时,我没有得到任何响应,最初我遇到了飞行前请求失败的问题,我现在已经在我的控制器中处理了这个问题,但是在它获得后它没有发送正确的请求好消息回来了.

我在API中包含了Angular Factory和C#Controller的代码.

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class RegisterController : ApiController
{
    public string Post()
    {

        return "success";
    }

    public HttpResponseMessage Options()
    {
        return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
    }
}


var RegistrationFactory = function($http, $q, ApiAddress) {
return function(model) {
   // $http.post(ApiAddress.getApiAddress() + '/Register/Post', model.ToString());

    $http({
        method: "POST",
        url: ApiAddress.getApiAddress() + '/Register/Post',
        data: model,
        headers: { 'Content-Type': 'application/json; charset=utf-8' }
    }).success(function(data) {
        $location.path("/");
    });
}
};

RegistrationFactory.$inject = ['$http', '$q', 'ApiAddress'];
Run Code Online (Sandbox Code Playgroud)

编辑:

我仍然对此没有任何喜悦,但是我在Internet Explorer中测试过它并没有任何问题.

通过禁用Web安全性开始,我已经使用chrome工作了,但显然这并不理想,因为它不适用于启用了安全性的用户PC.

Him*_*ary 4

我看到你已经在服务器端做了CORS的适配。但我看不到任何客户端(javascript)适配。也许您应该在调用服务之前添加以下代码。

$http.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
Run Code Online (Sandbox Code Playgroud)

让我知道这是否可以解决问题。在所有情况下都为我工作:)