C# 带正文的angularjs资源帖子
我是angularjs的新手,我正在尝试使用带有body to exist api的资源发布文章 当我在邮递员身上发送邮件时,它可以正常工作,登录并取回令牌 api运行良好 我怎样才能在angularjs上做到这一点 这是我的密码 这是apiC# 带正文的angularjs资源帖子,c#,angularjs,asp.net-web-api2,C#,Angularjs,Asp.net Web Api2,我是angularjs的新手,我正在尝试使用带有body to exist api的资源发布文章 当我在邮递员身上发送邮件时,它可以正常工作,登录并取回令牌 api运行良好 我怎样才能在angularjs上做到这一点 这是我的密码 这是api [Route("v1/token")] [HttpPost] public IHttpActionResult Post(LoginViewModel viewModel) {} 我的资源工厂 app.fa
[Route("v1/token")]
[HttpPost]
public IHttpActionResult Post(LoginViewModel viewModel)
{}
我的资源工厂
app.factory('getToken', function ($resource, $q) {
return function (email, password) {
console.log(email);
console.log(password);
return $resource('http://localhost:9303/v1/token', {}, {
login: {
method: 'POST',
headers: {
'Content-Type': 'application/jsonp;'
},
body: {
Email: email,
Password: password
}
}
});
}
});
这是我的登录功能
loginService.login = function (username, password) {
var deferred = $q.defer();
if (username === 'erez' && password === 'pass') {
var src = getToken('email','password').login(function (result) {
console.log(result);
});
console.log(src);
deferred.resolve(src);
}
else {
deferred.reject({ message: 'Unauthorized user' });
}
return deferred.promise;
}
我知道那个错误
POST http://localhost:9303/v1/token (anonymous function) @ angular.js:11442r @ angular.js:11235g @ angular.js:10945(anonymous function) @ angular.js:15552m.$eval @ angular.js:16820m.$digest @ angular.js:16636m.$apply @ angular.js:16928(anonymous function) @ angular.js:24551n.event.dispatch @ jquery-2.2.0.min.js:3r.handle @ jquery-2.2.0.min.js:3
(index):1 XMLHttpRequest cannot load http://localhost:9303/v1/token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:53647' is therefore not allowed access. The response had HTTP status code 500.
当我对api进行debig时,当我到达api时,viewModel为null
为什么它是空的
他不了解我的身体
我试着用params替换body,但都是一样的
感谢您的帮助您正在请求从一个域到另一个域,例如从www.xyz.com到www.abc.com。在您的情况下,您正在从源“localhost:53647”请求“localhost:9303/v1/token”
出于调试目的,您可以使用Allow Control Allow Origin plugin For google chrome和其他浏览器,否则您需要配置并允许localhost:9303/接受来自其他域的请求。您正在请求从一个域到另一个域,例如从www.xyz.com到www.abc.com。在您的情况下,您正在从源“localhost:53647”请求“localhost:9303/v1/token”
出于调试目的,您可以使用Allow Control Allow Origin plugin For google chrome和其他浏览器,否则您需要配置并允许localhost:9303/接受来自其他域的请求。好的,我想分享我对这个问题的解决方案 经过大量研究,我发现当你试图发布到WebAPI时,你必须在同一个域中,这是典型的跨域问题 首先,您需要在PackageMenage控制台上安装
Install-Package Microsoft.AspNet.WebApi.Cors
如果您的web.config中有,则应删除该选项
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
</customHeaders>
</httpProtocol
并且需要将这一行添加到web api上的post方法中
[EnableCors(origins: "*", headers: "*", methods: "*")]
希望它能帮助别人
关于我想分享一下我对这个问题的解决方案 经过大量研究,我发现当你试图发布到WebAPI时,你必须在同一个域中,这是典型的跨域问题 首先,您需要在PackageMenage控制台上安装
Install-Package Microsoft.AspNet.WebApi.Cors
如果您的web.config中有,则应删除该选项
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
</customHeaders>
</httpProtocol
并且需要将这一行添加到web api上的post方法中
[EnableCors(origins: "*", headers: "*", methods: "*")]
希望它能帮助别人
关于嗯,您的问题是“不存在“访问控制允许原点”标题…”。是您的服务器拒绝了请求,因为它来自不知道的位置。所需要的是对服务器进行修改,以允许来自其他来源的请求。你应该读一些关于它的书,看看它是如何与具有相同标题的postman一起工作的?Chrome打包的应用程序可以具有跨域权限。当您安装Postman时,它会提示您此应用程序将访问任何域。您的问题是“不存在“访问控制允许来源”标题…”。是您的服务器拒绝了请求,因为它来自不知道的位置。所需要的是对服务器进行修改,以允许来自其他来源的请求。你应该读一些关于它的书,看看它是如何与具有相同标题的postman一起工作的?Chrome打包的应用程序可以具有跨域权限。当您安装Postman时,它会提示您此应用程序将访问任何域。但是,当我调试post api时,它会捕获post req,但viewmodel为空。您需要调用登录函数,以便将viewmodel发送到您的api。请在代码中进行以下更改,您就可以……)返回函数(){return$resource(“”,{},{login:{method:'POST',headers:{'Content Type':'application/jsonp;'}}});//并更改调用此服务的位置var src=getToken.login({Model Body here})。$promise()。然后(函数(结果){console.log(结果);});但是,当我调试post api时,它会捕获post req,但viewmodel为空。您需要调用login函数,以便将viewmodel发送到您的api。请在代码中进行以下更改,您就可以…:)返回函数(){return$resource(“”,{},{login:{method:'POST',headers:{'Content Type':'application/jsonp;'}}}}});//并更改调用此服务的位置var src=getToken.login({Model Body here})。$promise().then(函数(结果){console.log(result);});