跨域请求如何携带cookie?不小心都拿了Offer

我最近参加了一次求职面试,接连面试了两三个公司。
面试官问了一个问题。
如何解决跨域问题?我简单的讲了一会儿这四种方法,然后面试官又问了这个问题。
跨域请求如何传递cookie?(传统的面试套路,通常是跟着回答,提出深入的问题。
)由于我之前的项目都是同源的,不涉及跨域访问,所以一时没有回答。
所以我想出了这篇文章。
文章

首先我们看一下相对简单的代码结构。

首先,我们从服务A的index.html页面获取一个cookie并运行服务A。

核心注释:接下来,我们开始解决域间传递cookie的问题。

什么是凭证?

XMLHttpRequest.withCredentials属性用于跨站点访问控制(cross-siteAccess-control)请求。
在同一站点上使用withCredentials属性无效。

如果在从其他域发送XMLHttpRequest请求之前未将withCredentials设置为true,则您将无法为自己的域设置cookie值。
通过将withCredentials设置为true获得的第三方cookie仍然遵循同源策略,无法通过[xss_clean]或headers中请求的脚本访问。

修改B服务(app2.js)中的代码。

可以看到,这次跨域请求成功,并返回了数据!它还携带来自服务A的cookie。
至此你就完成了。

如何在HTML中读入cookie?

逻辑有错吗?我认为“if(cookies!=null){”的说法是不正确的。
应改为“if(cookies==null){”。
if(getConfig("COOKIESECURE").equalsIgnoreCase("On"))这里getConfig属于哪个类?我不明白。
-----------------------------------------------------干得好,IE和FF兼容。
给我点分吧,LZ/*********************************************functionSetCookiefunctionGetCookiefunctionDelCookiecook即**********************************************/functionSetCookie(cookie名称、cookie值、路径、域、安全性){varexpires=newDate();expires.setTime(expires.getTime()+100000000);[xss_clean]=escape(cookieName)+'='+escape(cookieValue)+(过期?';expires='+expires.toGMTString():'')+(路径?';path='+路径:'/')+(域?';域='+域:'')+(安全性?';securate':'');}functionGetCookie(name){varcookie_start=[xss_clean].indexOf(name);varcookie_end=[xss_clean].indexOf(";",cookie_start);returncookie_start==-1?'':unescape([xss_clean].substring(cookie_start+name.length+1,(cookie_end>cookie_start?cookie_end:[xss_clean].length)));}functionDelCookie(cookieName,cookieValue,path,domain,seTreatment){varcookieValue="hello";varexpires=newDate();expires.setTime(expires.getTime()-100000);[xss_clean]=escape(cookieName)+'='+escape(cookieValue)+(过期?';过期='+expire.toGMTString():'')+(路径?';路径='+路径:'/')+(域?';域='+域:'')+(安全性?';安全性':'');}//用法:SetCookie("哈哈","1234");GetCookie("哈哈");DelCookie("哈哈");

JS显示用户登录情况!

这里有两个想法:方法一:使用cookie。
在第一个登录页面,将成功登录用户的当前用户名保存到cookie中。
在wel.html页面中,只需读取cookie值并将其显示在指定位置即可。
方法二:登录成功后,使用_window.location="wel.html?username="+LoginForm.uname.value;将参数传递到网页中的指定页面,然后在web.html页面中读取。