angularjs post方法中得到405错误
Getting 405 error in angularjs post method
我已经尝试在stackoverflow中接受这个问题的答案。在angularjs中,当我向本地Api
发送post
请求时,它可以工作。但当我更改为跨域api时,它不工作。
这是我的代码
var myapp = angular.module('myApp',['ngRoute','http-auth-interceptor'])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}])
.factory('featuresData', function ($http) {
return{
doCrossDomainGet: function(data) {
return $http({
url:'http://example.com/api/login',
type: "POST",
crossDomain: true,
data: JSON.stringify({"username":"test_teacher" , "password":"123"}),
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (response) {
console.log(response);
},
error: function (xhr, status) {
alert("error");
}
})
}
}
});
我在控制台中收到以下消息:
XMLHttpRequest无法加载example.com/api/login。请求的资源上不存在"Access Control Allow Origin"标头。原点"localhost";因此不允许访问。响应的HTTP状态代码为405。
Api在Android,Ios
客户端应用程序和CURL 中运行良好
curl command
curl -X POST -H "Accept: Application/json" -H "Content-Type: application/json" http://example.com/api/login -d '{"username":"test_teacher","password":"123"}'
curl output
{"username":"test_teacher","roles":["ROLE_TEACHER"],"access_token":"7q8dcreo5bngk32jq8nmefrfgp6nope2"}
您的angular应用程序和后端grails api不在同一个域上。因此,当您从angular到grails后端进行api调用时,它实际上是一个跨域的ajax调用。除非您相应地配置了应用程序,否则您无法进行跨域ajax调用。
查看cors插件-它将帮助您支持cors。
我遇到了类似的问题,经过长期的研究,我找到了一个简单的解决方案
删除web.config 中所有与CORS相关的设置
像
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
只需在WebAPIconfig.cs 中添加这两行即可
// Web API routes
var cors=new EnableCorsAttribute("",""、"*");配置。EnableCors(cors);
以及您从angular 的帖子请求
Factory.postData = function (data) {
var request = $http({
method: "POST",
url: urlBase+'api/url',
data: data,
headers: {
"Content-Type": "application/json"
}
});
return request;
}
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- jQuery在输入下验证post错误消息
- 使用javascript ajax post方法的未定义偏移PHP错误
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- jQuery AJAX Post方法错误(语法错误)
- 为什么我的$http.post返回一个400错误
- AngularJS$http.post调用返回502(坏网关)错误
- angularjs post方法中得到405错误
- POST encodeURI查询字符串内部服务器错误 500
- AJAX POST成功并错误触发
- $.post返回语法错误,意外''
- Jquery AJAX Post:500(内部服务器错误)
- angularjs中的POST 400错误请求
- javascript中的POST错误
- AJAX Http POST:没有传输错误
- jQuery ajax POST在chrome中返回错误
- 带有jQuery的Ajax POST抛出空错误
- $.ajax vs $.post:获取允许源错误
- 无法运行内部功能测试.错误:[POST http://localhost:4444/wd/hub/session] co
- 未捕获的类型错误:$.post不是函数