我不确定我的http post方法发生了什么。从我正在阅读的内容来看,我的安全性可能有问题,但我不确定是这种情况还是如何解决它。任何正确方向的见解都会很好。
我正在尝试发布API并检索回复并返回数据。当我在IE中运行POST时,我得到了正确的响应。
然而,当我在Chrome中尝试此操作时,我得到了奇怪的结果。我的POST变成了OPTIONS方法。状态代码为200 OK,但我的响应为空。当我尝试在没有POST的情况下直接访问网址时,我会在浏览器中显示:
{“result”:false,“error”:“身份验证失败:会话身份验证失败:未指定主机名身份验证状态:无效登录”}
这是test.js(控制器)
var host = '255.255.255.255';
var creds = {'logintype':'1','host':host,'user':'Administrator','password':'1234','controlid':'ABC999'};
//var obj = JSON.stringify(creds);
angular.module('myApp.test', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/test', {
templateUrl: 'test/test.html',
controller: 'TestCtrl',
resolve: {
friends: ['$http', function($http) {
return $http({url: 'http://192.168.2.164/ISAPI/rip.dll/REST/SESSIONS/',method: 'POST', data: creds })
.success(function (data) {
return data;
})
.error(function () {
return 'Error';
});
}]
}
});
}])
.controller('TestCtrl', ['$scope', 'friends',function($scope,response) {
$scope.response = response;
}]);
答案 0 :(得分:0)
感谢anananderson,我能够解决我的问题。我之所以发生这种情况,是因为Chrome会针对跨域请求执行称为“预检”的操作。我需要将API移动到与运行站点相同的服务器上,以避免跨站点脚本。