A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鱼丸儿 黑马粉丝团   /  2017-12-23 09:49  /  1991 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 鱼丸儿 于 2017-12-23 09:56 编辑

问题:何为跨域?
就是不同域名下的访问,如在www.test1.com下对www.test2.com下的文件进行访问,这就是跨域访问,而服务端一般是不允许直接跨域发送请求的,要解决这个问题有三种解决方案

方案一:不使用封装的ajax,使用script标签来实现跨域请求
原理分析:
首先来做个测试,script标签是否可以跨域引入文件?
我们在localhost域名下创建了一个kuayu.html文件,里面定义了一个方法,我们想通过在script标签中引入的php文件中调用这个方法,如果可以实现,说明script标签可以跨域引入文件
Localhost域名下的Kuayu.html

www.ajax.com域名下的文件kuayu.php

在kuayu.html中刷新发现可以执行test方法

于是说明可以通过script标签跨域引入文件

代码实现:
Kuayu.html

Kuayu.php

运行结果:


方案二:使用Jquery中封装好的dataType属性,设置其值为jsonp格式即可

代码实现:
Kuayu2.html

Kuayu.php

运行结果:




由下图结果可知实际上也是在url后面传递了一个callback参数,来让服务端将数据传入相应的回调函数中,也就是说第一种方案是其实现原理



方案三:客户端不用作出任何改变,在服务端设置响应头即可

代码实现:
Kuayu3.html



Kuayu2.php


运行结果:


以上就是三种实现跨域请求的解决方案

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马