美文网首页
Ajax、同步异步、跨域的理解

Ajax、同步异步、跨域的理解

作者: JLong | 来源:发表于2020-04-20 11:49 被阅读0次

Javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任务和流程。

javascript是单线程。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务,如果前一个任务耗时很长,后一个任务就不得不一直等着。于是就有一个概念——任务队列,于是,所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。

同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;(需要等待前一个任务完成后才能进行后一个任务)

异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。(同时进行任务)

其实同步和异步,无论如何,做事情的时候都是只有一条流水线(单线程),

同步和异步的差别就在于这条流水线上各个流程的执行顺序不同

AJAX = 异步 JavaScript 和 XML

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

XMLHttpRequest 是 AJAX 的基础

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

创建 XMLHttpRequest 对象的语法:

variable=new XMLHttpRequest();

JQuery提供的Ajax方法:

原生js实现Ajax方法是这样的:

跨域

是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。

广义的跨域:

、等dom标签,还有样式中background:url()、@font-face()等文件外链、、等dom标签,还有样式中background:url()、@font-face()等文件外链3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等

其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

1、 通过jsonp跨域

2、 document.domain + iframe跨域

3、 location.hash + iframe

4、 window.name + iframe跨域

5、 postMessage跨域

6、 跨域资源共享(CORS)

7、 nginx代理跨域

8、 nodejs中间件代理跨域

9、 WebSocket协议跨域

具体参考:https://segmentfault.com/a/1190000011145364

相关文章

  • Ajax、同步异步、跨域的理解

    Javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start...

  • 珠峰 AJAX --- JSONP跨域

    珠峰 AJAX --- JSONP跨域AJAX(异步 javascript and XMLHTTPReq...

  • ajax

    ajax async javascript and xml在ajax的异步不是我们理解的同步异步编程,而是泛指局部...

  • Ajax——同步/异步;跨域/跨域解决方法

    推荐阅读:前端常见跨域解决方案 写的很全面很详细 https://segmentfault.com/a/11900...

  • AJAX-全集

    同步+异步 Ajax同步+异步 JavaScript之(AJAX) JQuery之(AJAX) JQuery-有f...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • 如何解决跨域问题?

    理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域 出于安全考虑,服务器不允许ajax跨域获取数据,但是可...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • 理解ajax跨域

    跨域产生的原因 ionic项目什么情况下会产生ajax跨域问题 针对ionic项目开渔问题我们怎么去避免 跨域产生...

  • 2020-04-03

    1.如何解决跨域问题?理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域出于安全考虑,服务器不允许ajax...

网友评论

      本文标题:Ajax、同步异步、跨域的理解

      本文链接:https://www.haomeiwen.com/subject/vigmbhtx.html