AngularJS CORS api 与球衣
AngularJS CORS api with Jersey
我在通过 AngularJS 调用支持 CORS 的服务时遇到问题。
这是我的场景:
上有一个启用了 CORS 的 Jersey 2.3 服务器
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "http://localhost:8000");
cres.getHeaders().add("Access-Control-Allow-Headers", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
}
}
我在 http://localhost:8000 上有一个 nodejs 服务器提供静态内容(angularjs 库,我的 javascript 等)
这是我的 angular 球衣服务 API:
app.service("myapi", ["$http", function($http) {
this.backend = "http://localhost:4567"
this._header = function(token) {
return {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Bearer "+token,
}
}
this.mysharings = function(token, hash) {
var serverurl = this.endpoints['path'] + '/' + hash;
return $http({
method: "GET",
url: serverurl,
headers: this._header(token),
});
};
this.cards = function(token) {
return $http({
method: "GET",
url: this.endpoints["path2"],
headers: this._header(token)
});
};
}]);
有趣的是:cards() 方法效果很好(浏览器发送一个 OPTION 请求,然后是实际的 GET),而 myshareds() 方法失败。
特别是,我没有检测到任何 HTTP 请求(没有 OPTION 和 GET),只有这个 json:
{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://localhost:4567/path2","headers":{"Accept":"application/json","Authorization":"Bearer 4gr7gb6jspnr4buchmhir9rc3u"},"withCredentials":false},"statusText":""}
日志控制台上没有任何信息。
我实际上可以更改服务器和客户端的代码。
你有什么想法吗?我在这里和网上找到了很多文章,但没有一个有用的方法。
提前致谢
S.
问题与 CORS 无关。
我的浏览器(Firefox 和 Chrome)安装了 uBlock Origin 和 Disconnect 扩展。
禁用它们使 GET 请求正常工作
我在通过 AngularJS 调用支持 CORS 的服务时遇到问题。 这是我的场景:
上有一个启用了 CORS 的 Jersey 2.3 服务器@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "http://localhost:8000");
cres.getHeaders().add("Access-Control-Allow-Headers", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
}
}
我在 http://localhost:8000 上有一个 nodejs 服务器提供静态内容(angularjs 库,我的 javascript 等)
这是我的 angular 球衣服务 API:
app.service("myapi", ["$http", function($http) {
this.backend = "http://localhost:4567"
this._header = function(token) {
return {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Bearer "+token,
}
}
this.mysharings = function(token, hash) {
var serverurl = this.endpoints['path'] + '/' + hash;
return $http({
method: "GET",
url: serverurl,
headers: this._header(token),
});
};
this.cards = function(token) {
return $http({
method: "GET",
url: this.endpoints["path2"],
headers: this._header(token)
});
};
}]);
有趣的是:cards() 方法效果很好(浏览器发送一个 OPTION 请求,然后是实际的 GET),而 myshareds() 方法失败。
特别是,我没有检测到任何 HTTP 请求(没有 OPTION 和 GET),只有这个 json:
{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://localhost:4567/path2","headers":{"Accept":"application/json","Authorization":"Bearer 4gr7gb6jspnr4buchmhir9rc3u"},"withCredentials":false},"statusText":""}
日志控制台上没有任何信息。
我实际上可以更改服务器和客户端的代码。
你有什么想法吗?我在这里和网上找到了很多文章,但没有一个有用的方法。
提前致谢
S.
问题与 CORS 无关。
我的浏览器(Firefox 和 Chrome)安装了 uBlock Origin 和 Disconnect 扩展。
禁用它们使 GET 请求正常工作