Javascript AngularJS资源选项与凭据问题
我在使用AngularJS资源时遇到了一个问题,即无法执行、放置、发布或删除操作。然而,得到的作品只是伟大的 最终,我有一个.NETWebAPI,它是我的服务器端。我启用了CORS,但我使用Windows身份验证来授权用户 在我的app.Config中,我添加了以下凭据:Javascript AngularJS资源选项与凭据问题,javascript,c#,asp.net,angularjs,asp.net-core,Javascript,C#,Asp.net,Angularjs,Asp.net Core,我在使用AngularJS资源时遇到了一个问题,即无法执行、放置、发布或删除操作。然而,得到的作品只是伟大的 最终,我有一个.NETWebAPI,它是我的服务器端。我启用了CORS,但我使用Windows身份验证来授权用户 在我的app.Config中,我添加了以下凭据: app.config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.useXDomain = true; $httpPr
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
}
]);
在我的AngularJS控制器中,我有这样的东西:
var ModelGrab = $resource($rootScope.baseurl + 'Staging/GIS/CurrentTransformer/:id', null, { 'delete': { method: 'DELETE' } });
现在,当我调用此函数时,如下所示:
ModelGrab.get({ page: $scope.currentPage, records: $scope.recordsperpage, sort: $scope.sortType, reverse: $scope.sortReverse, search: $scope.search, all: false }).$promise.then(function (model) {
$rootScope.model = model.List;
$scope.totalItems = model.Count;
setTotalPages();
}, function (errResponse) {
$scope.showMessage('Error retrieving the model', 'danger');
});
ModelGrab.delete({ 'ID': ID }, function () {
$scope.showMessage('Data saved successfully', 'success');
GetData();
}, function (e) {
$scope.showMessage('An error occurred while trying to save the data', 'danger');
});
一切都很好。但是,当我像这样调用DELETE函数时:
ModelGrab.get({ page: $scope.currentPage, records: $scope.recordsperpage, sort: $scope.sortType, reverse: $scope.sortReverse, search: $scope.search, all: false }).$promise.then(function (model) {
$rootScope.model = model.List;
$scope.totalItems = model.Count;
setTotalPages();
}, function (errResponse) {
$scope.showMessage('Error retrieving the model', 'danger');
});
ModelGrab.delete({ 'ID': ID }, function () {
$scope.showMessage('Data saved successfully', 'success');
GetData();
}, function (e) {
$scope.showMessage('An error occurred while trying to save the data', 'danger');
});
我得到一个错误:
选项。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为401
现在,当我查找网络信息查看它是否通过了删除操作的withCredentials时,我注意到它没有通过
在我的ASP.NET初创公司中,我已经设置了CORS,所以我应该很乐意到这里接受它:
var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();
policy.Headers.Add("*");
policy.Methods.Add("*");
policy.Origins.Add("http://localhost:27062");
policy.SupportsCredentials = true;
services.ConfigureCors(x => x.AddPolicy("ADMSCORS", policy));
services.AddEntityFramework().AddSqlServer().AddDbContext<ADMSContext>(options => options.UseSqlServer(Configuration.GetSection("Data:ConnectionString").Value));
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("ADMSServices", new AuthorizationPolicyBuilder().RequireRole(Configuration.GetSection("Security:Role").Value).Build());
});
在我的控制器内,我具有以下功能:
[Route("api/Staging/GIS/CurrentTransformer")]
[Authorize(Policy = "ADMSServices")]
public class CurrentTransformerController : Controller
{
[FromServices]
public ADMSContext _Context { get; set; }
[HttpGet]
public ListObject Get(int page, int records, string sort, bool reverse, string search, bool all)
{
ListObject model = new ListObject();
model.List = GetList(page, records, sort, reverse, search, all);
model.Count = _Context.CurrentTransformers.Count();
return model;
}
[HttpDelete]
public void Delete(int id)
{
var model = _Context.CurrentTransformers.SingleOrDefault(line => line.ID == id);
if (model != null)
{
_Context.CurrentTransformers.Remove(model);
_Context.SaveChanges();
}
}
}
我只需要能够弄清楚为什么我在PUT、POST和DELETE上出现错误。为什么它不能通过命令的windows身份验证