Javascript 如何从请求负载将数据发布为json?

Javascript 如何从请求负载将数据发布为json?,javascript,json,angularjs,Javascript,Json,Angularjs,这是我的代码示例,虽然我将方法设置为post,但它会将请求方法设置为OPTIONS,而不会设置请求有效负载 我不确定这是否是CORS的问题,因为它与诸如Postman和Rest控制台之类的chrome插件一起工作。我已经检查了向服务器请求的两个工具是request-method:post、Content-Type:application/json和$scope.data中的数据,它们将被设置为request-payload。原因是什么 angular.module('httpExample',

这是我的代码示例,虽然我将方法设置为post,但它会将请求方法设置为OPTIONS,而不会设置请求有效负载

我不确定这是否是CORS的问题,因为它与诸如Postman和Rest控制台之类的chrome插件一起工作。我已经检查了向服务器请求的两个工具是request-method:post、Content-Type:application/json和$scope.data中的数据,它们将被设置为request-payload。原因是什么

angular.module('httpExample', []).controller('FetchController', ['$scope', '$http', '$templateCache',
function($scope, $http, $templateCache) {
$scope.headers= {
                'Accept': '*/*',
                'Content-Type': 'application/json; charset=UTF-8'
            };
            $scope.method = 'POST';
            $scope.url = 'http://localhost:56652/reqresp.svc/json/post';
            $scope.data={"requests":[{"__type":"AuthenticateAndGetProsties:#LabOra.ProsteModul.ReqResp.Requests", "Authentication":{ "__type":"UserAuthentication:#LabOra.ProsteModul.ReqResp","Username":"xxx","Password":"yyyy" }}]};

            $scope.fetch = function() {
                $scope.code = null;
                $scope.response = null;

                $http({method: $scope.method, url: $scope.url,data: JSON.stringify($scope.data),headers:$scope.headers, cache: $templateCache}).
                    success(function(data,status) {
                        $scope.status = status;
                        //$scope.data =x2js.xml_str2json(data);
                        $scope.data =data;
                    }).
                    error(function( status) {
                        $scope.data = "Request failed";
                        $scope.status = status;
                    });
            };
        }]);
})(window.angular);

这是CORS问题,Agatha rest服务没有启用CORS。要在agatha中启用CORS,您必须在global.asax.cs中设置以下配置

        // enable CORS
        response.AddHeader("Access-Control-Allow-Origin", "*");
        response.AddHeader("X-Frame-Options", "ALLOW-FROM *");

        if (context.Request.HttpMethod == "OPTIONS")
        {
            response.AddHeader("Access-Control-Request-Method", "POST,GET,PUT,DELETE,OPTIONS");
            response.AddHeader("Access-Control-Allow-Headers", "Accept");
            response.AddHeader("Access-Control-Allow-Headers", "Authorization,Origin,X-Requested-With,Content-Type");
            response.AddHeader("Access-Control-Max-Age", "1728000");
            response.End();
        }

享受

对于跨来源POST和PUT请求以及其他请求,您的浏览器将首先发送选项请求以检查CORS的可用性。如果你在那之后没有看到帖子,那么它会因为某种原因而失败。调试问题所需的一切都应该在开发人员控制台中可用。您可以从未启用CORS的api接收数据,但浏览器将拒绝访问该数据并抛出ajax错误。是的,实际上是CORS问题,agatha rest服务未启用CORS。谢谢: