首先我用的框架是vue,请求协议用的是ajax,跨域的处理办法是使用了反向代理,在我之前的博文有详细说明,有兴趣的可以去查看下,在做身份认证权限限制的时候,后台有在http-header的response中set-cookie,前端允许跨域:
按理说前端无需再做特殊处理,首次登陆成功后,response中有set-cookie,之后所有的请求都会在request中自动带上cookie;
遇到的问题就是,之后的请求并没有携带cookie的内容,什么办法都试过了,最后才发现,是path路径的问题,服务端配置了只有路径为/tvmanage之下的才能访问cookie,所以只要服务端把配置的路径改为服务器ip加端口号就可以了,现在可以提交cookie出去了。
顺便提一下如何获取http response的头部信息:
ajax成功以后加入xhr对象,然后通过xhr.getAllResponseHeaders()就可以拿到了
success: function (data, status, xhr) { console.log(xhr.getAllResponseHeaders()) }也可以用ajax请求本地url:
$.ajax({ type: 'HEAD', // 获取头信息,type=HEAD即可 url : window.location.href, //url:"http://device.qq.com/cgi-bin/device_cgi/remote_bind_get_Verify", complete: function( xhr,data ){ // 获取相关Http Response header var wpoInfo = { // 服务器端时间 "date" : xhr.getResponseHeader('Date'), // 如果开启了gzip,会返回这个东西 "contentEncoding" : xhr.getResponseHeader('Content-Encoding'), // keep-alive ? close? "connection" : xhr.getResponseHeader('Connection'), // 响应长度 "contentLength" : xhr.getResponseHeader('content-length'), // 服务器类型,apache?lighttpd? "server" : xhr.getResponseHeader('Server'), "vary" : xhr.getResponseHeader('Vary'), "transferEncoding" : xhr.getResponseHeader('Transfer-Encoding'), // text/html ? text/xml? "contentType" : xhr.getResponseHeader('Content-Type'), "cacheControl" : xhr.getResponseHeader('Cache-Control'), // 生命周期? "exprires" : xhr.getResponseHeader('Exprires'), "lastModified" : xhr.getResponseHeader('Last-Modified'), 'set-cookie': xhr.getResponseHeader('set-cookie') }; // console.log(xhr.getAllResponseHeaders()) } });
希望本文对你有所帮助!
转载于:https://www.cnblogs.com/wangqiao170/p/9300844.html
