自定义 Header 从 Spring 休息到 AngularJS 客户端
Custom Header from Spring Rest to AngularJS Client
我想将自定义 header 从 Spring Rest Controller 发送到 AngularJS 中的 UI 客户端。我已经在 Whosebug 中查看了这里的答案,但是 none 的解决方案对我有用。
这是我的 Spring CORS 属性设置;
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers: Header-Error
allow-credentials: true
max-age: 1800
Spring 管理员,我将 Header-Error 作为我的习惯发回 Header:
public ResponseEntity<Void> startOauthToken(@PathVariable("seller") String seller){
// do something....
MultiValueMap<String, String> headers = new HttpHeaders();
headers.add("Header-Error","Account already is register with the system!!");
return new ResponseEntity<Void>( headers, HttpStatus.BAD_REQUEST);
}
在AngularJS这边,我发送请求如下:
var url = APP_CONFIG.apiRootUrl + 'api/v1/startOauthToken/'+value;
$http.get(url).success(function (response){
console.log("Vaue of the response is " + JSON.stringify(response));
})
.error(function(response){
console.log("Value of error " + JSON.stringify(response));
});
当我收到回复时,我没有在回复中看到我的自定义 header:
{
"data": "",
"status": 400,
"config": {
"method": "GET",
"transformRequest": [null],
"transformResponse": [null],
"url": "http://localhost:8082/api/v1/startOauthToken/somevalue",
"headers": {
"Accept": "application/json, text/plain, */*",
"Authorization": "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0QHRlc3QiLCJhdXRoIjoiUk9MRV9URU5BTlRfQURNSU4iLCJleHAiOjE1MzIwODU3MjV9.YdKPP63ZqQVGD9EZOtBu0aniP2R4uNllAEe-O8BiOjTKqgIiAQGCW9PcLSb1jp6Epvz3bzRcnPvKn0d2Gg4PHw"
}
},
"statusText": ""
}
但是在浏览器中我可以看到我的客户 header Header-Error 作为响应的一部分收到了,
非常感谢。
我已经设法解决了这个问题。在阅读 How to read response headers in angularjs? 的解决方案后,问题出现在 angularjs 方面。
,我改了$http.get
的签名
来自
$http.get(url).success(function (response){
console.log("Vaue of the response is " + JSON.stringify(response));
})
.error(function(response){
console.log("Value of error " + JSON.stringify(response));
});
到
$http.get(url).success(function (data , status, headers, config){
console.log("Info data " + JSON.stringify(data));
console.log("Info status " + JSON.stringify(status));
console.log("Info headers " + headers('Header-Error'));
console.log("Info config " + JSON.stringify(config));
})
.error(function(data , status, headers, config){
console.log("Info data " + JSON.stringify(data));
console.log("Info status " + JSON.stringify(status));
console.log("Info headers " + headers('Header-Error'));
console.log("Info config " + JSON.stringify(config));
});
请注意 headers 变量代表函数而不是 JS object,因此您需要传递 header 名称来检索值。所以就我而言,我通过了 'Header-Error'.
谢谢。
我想将自定义 header 从 Spring Rest Controller 发送到 AngularJS 中的 UI 客户端。我已经在 Whosebug 中查看了这里的答案,但是 none 的解决方案对我有用。
这是我的 Spring CORS 属性设置;
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers: Header-Error
allow-credentials: true
max-age: 1800
Spring 管理员,我将 Header-Error 作为我的习惯发回 Header:
public ResponseEntity<Void> startOauthToken(@PathVariable("seller") String seller){
// do something....
MultiValueMap<String, String> headers = new HttpHeaders();
headers.add("Header-Error","Account already is register with the system!!");
return new ResponseEntity<Void>( headers, HttpStatus.BAD_REQUEST);
}
在AngularJS这边,我发送请求如下:
var url = APP_CONFIG.apiRootUrl + 'api/v1/startOauthToken/'+value;
$http.get(url).success(function (response){
console.log("Vaue of the response is " + JSON.stringify(response));
})
.error(function(response){
console.log("Value of error " + JSON.stringify(response));
});
当我收到回复时,我没有在回复中看到我的自定义 header:
{
"data": "",
"status": 400,
"config": {
"method": "GET",
"transformRequest": [null],
"transformResponse": [null],
"url": "http://localhost:8082/api/v1/startOauthToken/somevalue",
"headers": {
"Accept": "application/json, text/plain, */*",
"Authorization": "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0QHRlc3QiLCJhdXRoIjoiUk9MRV9URU5BTlRfQURNSU4iLCJleHAiOjE1MzIwODU3MjV9.YdKPP63ZqQVGD9EZOtBu0aniP2R4uNllAEe-O8BiOjTKqgIiAQGCW9PcLSb1jp6Epvz3bzRcnPvKn0d2Gg4PHw"
}
},
"statusText": ""
}
但是在浏览器中我可以看到我的客户 header Header-Error 作为响应的一部分收到了,
非常感谢。
我已经设法解决了这个问题。在阅读 How to read response headers in angularjs? 的解决方案后,问题出现在 angularjs 方面。 ,我改了$http.get
的签名来自
$http.get(url).success(function (response){
console.log("Vaue of the response is " + JSON.stringify(response));
})
.error(function(response){
console.log("Value of error " + JSON.stringify(response));
});
到
$http.get(url).success(function (data , status, headers, config){
console.log("Info data " + JSON.stringify(data));
console.log("Info status " + JSON.stringify(status));
console.log("Info headers " + headers('Header-Error'));
console.log("Info config " + JSON.stringify(config));
})
.error(function(data , status, headers, config){
console.log("Info data " + JSON.stringify(data));
console.log("Info status " + JSON.stringify(status));
console.log("Info headers " + headers('Header-Error'));
console.log("Info config " + JSON.stringify(config));
});
请注意 headers 变量代表函数而不是 JS object,因此您需要传递 header 名称来检索值。所以就我而言,我通过了 'Header-Error'.
谢谢。