相关文章推荐
慷慨大方的洋葱  ·  python - ...·  1 年前    · 
有腹肌的苦瓜  ·  nexus - Nexus3 Conan ...·  1 年前    · 

最近在项目里设计了一段JS,需要客户网站嵌入这段JS,然后使用XMLHTTPRequest发送请求,但是发现请求中无法携带Cookie。

经过研究发现XMLHTTPRequest发送请求是无法携带Cookie的,即使使用了setRequestHeader方法是设置请求头里的cookie,也无法携带cookie。

var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Cookie', 'mycookie=cookie');

原因如下:https://stackoverflow.com/questions/15198231/why-cookies-and-set-cookie-headers-cant-be-set-while-making-xmlhttprequest-usin

所以就想到可以在JS里面动态插入一个Pixel(一个长宽为1的img标签,src属性为请求的URL)来发送请求,能成功携带cookie,示例代码如下:

var imgTag = document.createElement('img');
var bodyTag = document.getElementsByTagName('body')[0];
imgTag.height = 1;
imgTag.width = 1;
imgTag.style = 'border-style: none; display: none';
imgTag.alt = '';
imgTag.src = tbUrl;    //你要发请求的url
bodyTag.insertBefore(imgTag, bodyTag.childNodes[0]);

另外 还可以在请求头里面加入withCredentials: true来实现:

function postJson(url, data, isWithCredentials) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState === 4 && xmlHttp.status === 200)
            console.log(xmlHttp.responseText);
    xmlHttp.open("POST", url, true); // true for asynchronous
    if (isWithCredentials === true) {
        xmlHttp.withCredentials = true;
    xmlHttp.send(JSON.stringify(data));
                    使用XMLHttpRequest发送请求无法携带Cookie最近在项目里设计了一段JS,需要客户网站嵌入这段JS,然后使用XMLHTTPRequest发送请求,但是发现请求中无法携带Cookie。经过研究发现XMLHTTPRequest发送请求是无法携带Cookie的,即使使用了setRequestHeader方法是设置请求头里的cookie,也无法携带cookie。var xhr = ne...
				
1、原生ajax请求方式: 1 var xhr = new XMLHttpRequest();  2 xhr.open(“POST”, “http://xxxx.com/demo/b/index.php”, true);  3 xhr.withCredentials = true; //支持跨域发送cookies 4 xhr.send(); 2、jquery的ajax的post方法请求: $.ajax({ type: "POST", url: "http://xxx.com/api/test", dataType: 'json',     // 允许携带证书
作者:czy <czy82> 出处:http://www.nsfocus.net 日期:2003-09-03 (注意由于论坛会对文章中的一些字符作处理,所以最好到 http://www.chinansl.com/czy/xmlhttp.txt看文章 http://www.chinansl.com/czy/aspsky5.htm测试代码)     跨站脚本攻击想必各位都已经是很熟悉了,但是得到COOKIE的时候一直有一个 问题:总是要用WINDOW.OPEN弹一个窗体出来然后发送COOKIE,这样隐秘性 就大打折扣了。以前我想了一个在网页中用insertAdjacentHTM
可以用以下代码来设置XMLHttpRequest的头部信息:var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://www.example.com/', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setReques...
前台代码:var xhr = new XMLHttpRequest(); xhr.open('GET','http://localhost:3000/list'); xhr.withCredentials = true; xhr.send();XMLHttpRequest发送请求时需要设置withCredentials属性为true,来允许浏览器在自己的域设置cookie值。如果withCrede...
今天webryan给team做了一个关于HTTP cookie的分享,从各个方面给大家介绍一下大家耳熟能详的Cookie。主要是翻了维基百科的很多内容,因为维基百科的逻辑实在是很清晰:),ppt就不分享了,把原始的草稿贴出来给大家。欢迎批评指正。 HTTP Cookie: Cookie通常也叫做网站cookie,浏览器cookie或者http cookie,是保存在用户浏览器端的,并在发出
var timestamp = new Date().getTime(); var xmlResquest = new XMLHttpRequest(); xmlResquest.open('POST', _this.hnss + `/sheshui/yjjc/exportCompanyList?pageNum=${_this.page}&pageSize=${_this.pageSize}`); xmlResquest.setRequestHeader('Co.
运用JS设置cookie、读取cookie、删除cookie JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一种情况,在某个用例流程中,由...
ajax请求时,浏览器要求当前网页和server必须同源(安全) 同源:协议,域名,端口,三者必须一致 前端:http://a.com:8080/;server:https://b.com/api/xxx 注意:加载图片
XMLHttpRequest 使用XMLHttpRequest (XHR)对象可以与服务器交互。您可以从URL获取数据,而无需让整个的页面刷新。这使得Web页面可以只更新页面的局部,而不影响用户的操作。XMLHttpRequest在 Ajax 编程中被大量使用。 onreadystatechange 事件 只要 readyState 属性发生变化,就会调用相应的处理函数。这个回调函数会被用户...