【计算机网络】如何让Ajax通信过程携带Cookie呢?

Ajax

1. 介绍一下ajax并代码实现

1.1 基本概念

JavaScript 和XML(Asynchronous JavaScript And XML)。简单点说,就是使用 XMLHttpRequest 对象与服务器通信。 它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJAX最吸引人的就是它的“异步”特性,也就是说他可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。

Ajax | MDN

1.2 创建一个简单的Ajax

  • 创建 XMLHttpRequest 对象
if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+ ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 6 and older
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
  • 绑定onreadystatechange 事件
httpRequest.onreadystatechange = function(){
    // Process the server response here.
};
  • 向服务器发送请求
httpRequest.open('GET', 'http://www.example.org/some.file', true);
httpRequest.send();

完整的例子

function ajax(url, cb) {
  let xhr;
  if(window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else {
    xhr = ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.onreadystatechange = function() {
    if(xhr.readyState == 4 && xhr.status == 200) {
      cb(xhr.responseText);
    }
  }
  xhr.open('GET', url, true);
  xhr.send();
}

1.3 httpRequest.readyState的值(熟记)

  • 0 (未初始化) or (请求还未初始化)
  • 1 (正在加载) or (已建立服务器链接)
  • 2 (加载成功) or (请求已接受)
  • 3 (交互) or (正在处理请求)
  • 4 (完成) or (请求已完成并且响应已准备好)

1.4 访问服务端返回的数据

  • httpRequest.responseText

    • 服务器以文本字符的形式返回
  • httpRequest.responseXML
    • 以 XMLDocument 对象方式返回,之后就可以使用JavaScript来处理

1.5 GET 注意事项

  • 如果不设置响应头 Cache-Control: no-cache 浏览器将会把响应缓存下来而且再也不无法重新提交请求。你也可以添加一个总是不同的 GET 参数,比如时间戳或者随机数 (详情见 bypassing the cache)

1.6 POST 请求

[!NOTE]
POST请求则需要设置RequestHeader告诉后台传递内容的编码方式以及在send方法里传入对应的值

xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type": "application/x-www-form-urlencoded");
xhr.send("key1=value1&key2=value2");

1.7 Ajax如何携带cookie(面试加分)

  • ajax会自动带上同源的cookie,不会带上不同源的cookie
  • 可以通过前端设置withCredentials为true, 后端设置Header的方式让ajax自动带上不同源的cookie,但是这个属性对同源请求没有任何影响。会被自动忽略。

withCredentials | MDN

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/', true);
xhr.withCredentials = true;
xhr.send(null);

原文地址:https://www.cnblogs.com/fecommunity/p/11965926.html

时间: 2024-10-01 21:52:58

【计算机网络】如何让Ajax通信过程携带Cookie呢?的相关文章

ajax 跨域无法携带cookie 解决办法

ajax 跨域无法携带cookie,需要用到session,终于完美结局 xhrFields: { withCredentials: true }, 添加这个可能是大家都会做的一件事 但是添加上了之后就出现了另外一个问题 The 'Access-Control-Allow-Origin' header contains the invalid value 'Origin'. Origin ...... 2.服务器server端要配置Access-Control-Allow-Credentials

fetch默认不携带cookie

最近在使用fetch向服务器发送请求,过程中的体会和遇到的问题在这里记录一下. fetch返回的是一个Promise对象,我们可以对返回的结果做进一步的处理,这是与传统ajax的一个区别. 简单的请求写法如下: fetch(url) .then(res => res.json()) .then(json => { console.log(json); }) 也可以设置method.headers.body等参数,详见fetch api. ----------------------------

计算机网络体系结构及其简单通信

(一)通信的基本概念: 我们知道,通信的目的是快速.有效地传递信息.下面我们先来简单地介绍一点通信的基本知识: 现代信息的表达方式有文字.符号.声音.图像数据等多种形式.为了实现信息传递,通常以光.电等信号作为信息的载体. 信号:信息的表达形式 信道:信号传输的通道,是信号传输媒介的总称. 信源:发出信息的地方 信宿:信息传送的终点 根据传送信息的信道(信号传输媒介)不同,通信可分为有线通信和无线通信. 有线通信的信道:包括电缆.光缆.明线等可见的物理媒体. 无线通信的信道:有长波.中波.短波.

从wireshake分析http和https的通信过程

参考文章: Wireshark基本介绍和学习TCP三次握手 [技术流]Wireshark对HTTPS数据的解密 Wireshark/HTTPS Journey to HTTP/2 以TCP/IP协议为例,如何通过wireshark抓包分析? TCP三次握手和四次挥手 Https详解+wireshark抓包演示 前言 面试被问到有没有用过抓包工具, 还真没有... 弥补一波. 一直以来看http和https的介绍, 都是文章, 然后图片, 理解的也不深入. 借此一个机会, 深入理解下. 入行不久,

vue get/post请求如何携带cookie的问题

一: 只需要在main.js中写这三行代码即可 import axios from 'axios' axios.defaults.withCredentials=true;//让ajax携带cookie Vue.prototype.$axios = axios; 如果cookie携带不过去的话,请求响应的时候他会报错显示登陆过期的呦!!! 顺便说一下原生js携带cookie的方法: xhrFields: {               withCredentials: true         

前端Jquery-Ajax跨域请求,并携带cookie

目录 1. 需现在服务端允许跨域,允许携带cookie 2. 前端Ajax跨域请求代码 1. 需现在服务端允许跨域,允许携带cookie 因服务端脚本语言不同,自行搜索设置 2. 前端Ajax跨域请求代码 $.ajax({ type: "POST", url: "http://127.0.0.1:8000/api/login", data: JSON.stringify({'num': 1}), dataType: 'json', xhrFields: { with

IOS-网络(GET请求和POST请求、HTTP通信过程、请求超时、URL转码)

1 // 2 // ViewController.m 3 // IOS_0129_HTTP请求 4 // 5 // Created by ma c on 16/1/29. 6 // Copyright © 2016年 博文科技. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 12 @interface ViewController

网络中两台主机的通信过程(TCP)

两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打开主机的这个固定的端口.而客户机自己会打开一个大于1024的随机端口用来跟对方的主机进行通信.用户使用应用程序编辑信息,一个单一的会话,实际上就是一个主机应用层之间的逻辑的软件连接. 主机在传输层的操作: 对数据分段(Segment),添加TCP报头(包含源端口,目的端口,顺序号等) 分段的原因:

【转】WCF入门教程二[WCF应用的通信过程]

一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的对比图如下: WCF与其他分布式技术对比表 二.WCF中的 "A","B","C" 介绍 我们先看个生活中的例子,某一天,公司的领导让你去送一份合同文件,送文件的过程你可以选择的交通方式为"打车"."公交".&