博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax跨域与解决方案
阅读量:4984 次
发布时间:2019-06-12

本文共 1700 字,大约阅读时间需要 5 分钟。

1.同步交互与异步交互

同步交互:用户在URL地址输入http://www.baidu.com,服务器接收请求并进行相应处理,此时用户无法操作,只能等待,只有当返回数据到客户端的时候,用户才能继续操作

异步交互:用户操作某个页面,请求某个数据,客户可以继续操作(服务器返回数据),不涉及到整个页面的刷新

2.XmlHttp

XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面

3.ajax demo (理解ajax)  

文件有两个1.html和1.php

1.html代码如下

1    2    3    4     
5 Document 6 7 8 9
10 11 36

1.php代码如下

1 

结果是:

4.Ajax跨域是什么

 

我们先回顾一下域名地址的组成:

http:// www . google : 8080 / script/jquery.js

      http:// (协议号)

               www  (子域名)

             google (主域名)

               8080 (端口号)

script/jquery.js (请求的地址)

* 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。

* 不同的域之间相互请求资源,就叫“跨域”。

比如: 请求 

 

由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问。比如说你的网站域名是aaa.com,想要通过AJAX请求bbb.com域名中的内容,浏览器就会认为是不安全的,所以拒绝访问

5.解决方案

方案1 jsonp

JSONP是JSON格式的扩展.如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。

jsonp有什么用:由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求

html代码如下(使用jquery):

1  2  3  4     
5 Document 6 7 8 9 10 11 12 31

结果:

若注释dataType:'jsonp'这一行代码结果如下:(提示跨域导致请求失败)

html代码如下(原生js,不使用jquery)

1  2  3  4     
5 Document 6 7 8 9 10 28

php代码如下 

1 

结果:

方案2  jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择

6.实例(跨域请求360搜索接口)

1  2  3  4     
5 Document 6 26 27 28 29
30
31
32
33
    34
    39
40
41
42 43 77 78

 

结果:

 

转载于:https://www.cnblogs.com/lwn007/p/6444673.html

你可能感兴趣的文章
如何解决文章格式化编辑器win7 64位下找不到Comctl32.ocx
查看>>
核心动画-翻页效果的实现
查看>>
微信小程序弹出框 页面依然可以滑动的解决
查看>>
$.ajax同域请求,跨域请求的解决方案
查看>>
octave操作
查看>>
【Python】安装Python的mysql模块
查看>>
layui中的html怎样接收后台的值,layui框架与SSM前后台交互的方法
查看>>
Skulpt在线模拟运行Python工具
查看>>
287.软件测试概述
查看>>
297.白盒测试
查看>>
新闻客户端的突破与创新
查看>>
网络通信引擎ICE的使用
查看>>
js滚动事件实现滚动触底加载
查看>>
CetnOS minimal 网络不可用
查看>>
MySQL 数据库备份
查看>>
python 笔记
查看>>
【Java】NIO中Channel的注册源码分析
查看>>
JS监测鼠标指针位置
查看>>
Mac常用终端命令
查看>>
团队作业2
查看>>