我有 GO 语言的 REST API 和 Angularjs 的前端,但是当我以 Angular 形式获取资源时,我的自定义标头不存在。
控制器:
Persons.query(
function (data, headerGetter, status) {
var headers = headerGetter();
console.log(headers["X-Total-Count"]); //PRINT: undefined
console.log(headers) //PRINT: {Content-Type:application/json;charset=utf-8}
console.log(data); //PRINT: [{name:'mr x', age:'67'}, ....]
},
function (error) {
console.error(error);
});
Model:
myApp.factory("Persons", function ($resource) {
return $resource(api_url+"/persons");
});
响应 Chrome 或 Firefox,任何客户端:
Access-Control-Allow-Methods:GET
Access-Control-Allow-Origin:*
Content-Length:1839
Content-Type:application/json; charset=utf-8
Date:Thu, 12 Mar 2015 21:53:54 GMT
X-Total-Count:150
您从与您所在域不同的域发出请求API
位于,操作称为Cross-site HTTP requests ( CORS )
为了使用自定义标头,您需要设置另一个名为Access-Control-Expose-Headers
如果您希望客户端能够访问其他标头,您必须
使用 Access-Control-Expose-Headers 标头。该标头的值
是您想要公开的响应标头的逗号分隔列表
客户端。
此标头允许服务器将允许浏览器的标头列入白名单
访问。例如:
Access-Control-Expose-Headers: X-My-Custom-Header,X-Another-Custom-Header
这允许 X-My-Custom-Header 和
要向浏览器公开的 X-Another-Custom-Header 标头。
我这样做的方式.NET
(我想这有点相似Go
):
HttpContext.Current.Response.AppendHeader("Access-Control-Expose-Headers", "X-Total-Pages, X-Records");
HttpContext.Current.Response.AppendHeader("X-Total-Pages", pages.ToString());
HttpContext.Current.Response.AppendHeader("X-Records", records.ToString());
And in AngularJS
我收到这样的标题:
var headers = headers();
headers['x-total-pages']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)