我有这个curl命令,我想用angular进行模拟:
curl -k -F fieldName=@data.json -u username:Password url
此刻我开始做一个有角度的帖子。但是,我遇到了身份验证问题。我没有参数来输入用户ID和密码。
角度代码:
$scope.postCall = function () {
$scope.ngResult = "clicked";
var paramsJson = {
"imessageIdT": $scope.messageIdT,
"ilobT": $scope.lobT,
"iregionIdT": $scope.regionIdT,
"iassetClassT": $scope.assetClassT,
"additionalInfoT": $scope.additionalInfoT
};
var config = {
paramsJson: paramsJson
};
$http.post("WEBSITE", paramsJson, config)
.success(function (data, status, headers, config)
{
$scope.ngResult = logResult("POST SUCCESS", data, status, headers, config);
//$scope.ngResult = "Yes";
})
.error(function (data, status, headers, config)
{
$scope.ngResult = logResult("POST ERROR", data, status, headers, config);
//$scope.ngResult = "No";
});
};
答案 0 :(得分:2)
假设基本身份验证未经测试,则可能有效:
var username = "...", password = "***";
var config = {
headers: {
Authorization: "Basic " + window.btoa(username+":"+password)
},
method: "get", // or "post",
url: "destination.com"
};
$http(config).success(function(){
// on success
}).error(function(){
// on failure
});
我唯一不确定的是window.btoa
,如果它是符合RFC2045-MIME标准的Base64变体,那么你就是好的。
但我的例子是过度简化。实质上,您应该确定服务器支持的身份验证方案。它可以是IANA指定的以下任何一个:
根据所需的方案,您应该相应地撰写请求标头。
答案 1 :(得分:1)
这取决于你要连接的api。通常您会记录,服务器将在响应的标头上返回一个身份验证令牌。
1基本身份验证Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
2 Aoth2 Authorization: Bearer mF_9.B5f-4.1JqM
因此,您需要将此标头添加到您的请求中:
$http.post("WEBSITE", paramsJson, angular.extend({}, config, {headers: {
'Authorization': token}}))
如果请求是另一个域,则应使用jsonp。