<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="跨域CORS 带Cookie传递,在nodejs + express中的具体实现" id="card1">
<p> 游客</p><p>
标题:跨域CORS 带Cookie传递,在nodejs + express中的具体实现<br/>
正文:<br/>
CORS(跨来源资源共享协议)，高级浏览器(Chrome,firefox, opera, safir, ie10)在 XMLHttpRequest(AJAX) 中已经支持了这个协议。可以实现ajax跨域访问。（其实IE8也实现了，只不过是另外一个对象）由于是跨来源的的访问，标识HTTP状态的Cookie的使用有一些特别处理。Server Nodejs 代码res.setHeader('Access-Control-Allow-Origin', req.headers.origin);//注意这里不能使用 * res.setHeader('Access-Control-Allow-Credentials', true);//告诉客户端可以在HTTP请求中带上Cookieres.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');浏览器中 JS 代码var xhr = new XMLHttpRequest();xhr.open(&amp;quot;post&amp;quot;, &amp;quot;xxx/xxx&amp;quot;, true);xhr.withCredentials = true;//放在 open 方法后面比较靠谱xhr.onload = function(){}xhr.send(&amp;quot;a=1&amp;amp;b=2&amp;quot;);　　　　CORS + Cookie 在nodejs + express 中的实现。做一个/getInfo 的ajax接口。浏览器会先发送一个 options请求验证权限，最后再完成真的业务请求。//首先做一个 options 的请求返回CORS的头信息。app.options('/getInfo', function(req, res){	res.setHeader('Access-Control-Allow-Origin', req.headers.origin);	res.setHeader('Access-Control-Allow-Credentials', true);	res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');});//请求<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2007&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2007&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2007&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2007&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2007">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2007">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>