使用withCredentials发送跨域请求凭据
来源:互联网 发布:程序员简历自我评价 编辑:程序博客网 时间:2024/05/16 05:38
cookieCORSwithCredentialsXMLHttpRequest 2
详见我的博客:http://www.zawaliang.com/2013/02/186.html
默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的,XMLHttpRequest 2的一个重要改进就是提供了对授信请求访问的支持。
本地模拟www.zawaliang.com向www.xxx.com发送带cookie的认证请求,我们需求做以下几步工作:
- 默认情况下widthCredentials为false,我们需要设置widthCredentials为true:
var xhr = new XMLHttpRequest();xhr.open('GET', 'http://www.xxx.com/api');xhr.withCredentials = true;xhr.onload = onLoadHandler;xhr.send();
请求头,注意此时已经带上了cookie:
GET http://www.xxx.com/api HTTP/1.1Host: www.xxx.comUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip, deflateDNT: 1Referer: http://www.zawaliang.com/index.htmlOrigin: http://www.zawaliang.comConnection: keep-aliveCookie: guid=1
- 设置服务端响应头:
Access-Control-Allow-Credentials: true
如果服务端不设置响应头,响应会被忽略不可用;同时,服务端需指定一个域名(Access-Control-Allow-Origin:www.zawaliang.com),而不能使用泛型(Access-Control-Allow-Origin: *)
响应头:
HTTP/1.1 200 OKDate: Wed, 06 Feb 2013 03:33:50 GMTServer: Apache/2X-Powered-By: PHP/5.2.6-1+lenny16Access-Control-Allow-Origin: http://www.zawaliang.comAccess-Control-Allow-Credentials: trueSet-Cookie: guid=2; expires=Thu, 07-Feb-2013 03:33:50 GMTContent-Length: 38Content-Type: text/plain; charset=UTF-8X-Cache-Lookup: MISS from proxy:8080
有一点需要注意,设置了widthCredentials为true的请求中会包含远程域的所有cookie,但这些cookie仍然遵循同源策略,所以你是访问不了这些cookie的。
Ref
- Using CORS http://www.html5rocks.com/en/tutorials/cors/
- Introduction to XMLHttpRequest Level 2 http://dev.opera.com/articles/view/xhr2/
- HTTP access control (CORS) https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control
详见我的博客:http://www.zawaliang.com/2013/02/186.htm
阅读全文
0 0
- 使用withCredentials发送跨域请求凭据
- 使用withCredentials发送跨域请求凭据
- 使用withCredentials发送跨域请求凭据
- 使用withCredentials发送跨域请求凭据
- 使用withCredentials发送跨域请求凭据
- Ajax跨域问题:跨域请求设置withCredentials
- 在 ajax 跨域请求中携带 cookie 做身份认证 (xhr withCredentials属性)
- Ajax跨域请求后台无法识别session id的解决方式[withCredentials = true]
- ajax,附带身份凭证的请求,withCredentials
- VS2017我们无法刷新此账户的凭据发送请求时出错
- 使用ajax跨域withCredentials的作用
- 使用FiddlerScript发送请求
- 使用Https发送请求
- 使用GWT发送HTTP请求
- 使用telnet发送HTTP请求
- 使用HttpURLConnection发送POST请求
- 使用telnet发送HTTP请求
- 使用SOCKET发送HTTP请求
- Vim 快捷键整理
- 腾讯云--搭建Discuz论坛
- App启动优化
- Java 变量类型
- java实现月份增加
- 使用withCredentials发送跨域请求凭据
- SDWebImage 加载Gif
- Docker 容器与镜像清理汇总
- 解决 Error:No suitable device found: no device found for connection "System eth0"
- 解决ProxySQL的单点问题
- 威佐夫博弈
- 嵌入式学习教程_迅为4412开发板实现虚拟机和主机之间共享文件夹
- 求最大公约数、递归的使用
- 领导暗示你辞职的五个方式,遇到了你是乖乖离开还是死扛到底?