我无法在Angular 1.2.13中创建成功的获取请求。
var getProgress = function() {
var promise = $http({method: 'GET', url: 'http://localhost:8080/project/local/some/getStatus'});
promise.then(function(success) {
alert(JSON.stringify(success));
}, function(error) {
alert(JSON.stringify(error));
}, function(notify) {
alert(JSON.stringify(notify));
});
};
所以我试图从我的REST Web服务接收一些JSON。为了测试该服务,我从浏览器(IE9,Firefox 27,Chrome 33)访问它可以在所有这些服务中正常工作。
上面的代码使用angular但总是提示我错误:
* { “数据”: “”, “状态”:404, “配置”:{ “transformRequest”:[空], “transformResponse”:[空], “方法”: “GET”, “URL” :"http://localhost:8080/project/local/some/getStatus"
,“标题”:{“接受”:“application / json,text / plain, / ”}}} * *
使用 wireshark 我检查HTTP请求和HTTP响应,从浏览器和角度返回200 调用Web服务,以及所需的json对象!然而,角度提示我404.
当我从Firefox使用ANGULAR发出get请求并使用Findbugs进行调试时,在控制台中我获得了HTTP Code 200,然而Angular说404.尝试调整角度的代码无济于事,看不出有什么奇怪的。
以上代码在IE9中正常运行!
任何建议都表示赞赏。
答案 0 :(得分:3)
@GeoffGenz&& @BKM是对的。 CORS是罪魁祸首。我想有几种解决问题的方法。
localhost
发出请求...因为协议不同(文件与http),请求有所不同起源,如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript中所述。一旦部署在JBoss中,一切正常。@Provider public class RespFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext reqContext, ContainerResponseContext respContext) throws IOException { respContext.getHeaders().putSingle("Access-Control-Allow-Origin", "*"); } }
答案 1 :(得分:0)
我遇到了同样的问题。但原因只是我向控制器添加了 EnableCors 属性,但我忘了在 WebAPI 配置中启用 CORS 。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableCors();
....
}
}
答案 2 :(得分:0)
这也可以使用IE解决,IE从不使用本地html文件之前的文件:\。使用file:\\的原因不适用于http请求已在上面的答案中解释过。
答案 3 :(得分:-2)
试试这个:
$http({method: 'GET', url: 'http://localhost:8080/project/local/some/getStatus'}).
success(function(data, status, headers, config) {
alert(JSON.stringify(data));
}).
error(function(data, status, headers, config) {
alert(JSON.stringify(data));
});