首页 文章

状态200 OK(),角度承诺抛出错误 - 否'Access-Control-Allow-Origin'

提问于
浏览
0

首先,cors已启用并在webapi中工作,我可以通过从另一个控制器执行发布/获取请求而没有问题来确认这一点,无论何时禁用cors我都不能再从服务器发布/获取数据 . 对于令牌也是如此,只要我在webapi上禁用cors我就没有得到有效的响应 . 但是现在我得到了有效的答复 .

我正在尝试从Web API获取令牌 . 我使用角度资源和承诺 . 在fiddler我可以看到状态200,所以我得到一个令牌,JSON说bearer token = x所以一切似乎都很好 . 邮差也在工作 . 但是当我查看调试控制台时,我发现承诺是一个错误,即使是小提琴手和邮递员都向我显示了一个有效的JSON文件和状态200 .

// Controller
.controller('LoginCtrl', ['$scope', 'Token', function ($scope, Token) {
    $scope.login = function () {Token.save('username=test123@test.com&password=Test123!!&grant_type=password')
            .$promise.then(function (response) {
            console.log(response);
        });
    };
}]);

在我的工厂里

.factory('Token', ['$resource', function ($resource) {
    return $resource(baseUrl + 'token', null, {
        save: {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Accept': '*/*'
            },
        }
    });
}]);

我在开发人员工具控制台中得到的响应是

可能是未处理的拒绝:{"data":null,"status":-1,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","headers":{"Content-Type":"application/x-www-form-urlencoded","Accept":“/ "}," data ":" username=test123@test.com&password=Test123 !!&grant_type=password "," url ":" http://localhost:55126/token "}," statusText ":"“}

我100%确定我从/ token调用中获取了一个有效的JSON对象 . 提前致谢 .


更新

XMLHttpRequest无法加载localhost:55126 / token . 请求的资源上不存在“Access-Control-Allow-Origin”标头 . 起源'localhost:9000';因此不允许访问 . angular.js:14642 -

可能未处理的拒绝:{“data”:null,“status”: - 1,“config”:{“method”:“POST”,“transformRequest”:[null],“transformResponse”:[null],“jsonpCallbackParam “:” 回调 “ ”报头“:{ ”内容类型“: ”应用程序/ x WWW的形式进行了urlencoded“, ”接受“: ”/“}, ”数据“:” username=test123@test.com&password = Test123 !!&grant_type =密码”, “URL”: “本地主机:55126 /令牌”;} “状态文本”: “”}

这两条错误线紧接着弹出

1 回答

  • 0

    解决方案似乎与CORS相关 . 甚至我安装了NuGet Microsoft.AspNet.WebApi.Cors并使用:

    config.EnableCors(new EnableCorsAttribute(“”,“”,“*”));

    这有助于“正常”的控制器请求,每当请求令牌时我发现我必须安装NuGet Microsoft.Owin.Cors并使用:

    app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

    在应用程序的web api配置部分 . 谢谢你的帮助 .

相关问题