js中ajax如何解决跨域请求
js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词
1、跨域请求
所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操作。
跨域指的协议、域名、端口 有一个不同的情况下都是跨域
例:在本站点请求外站的数据是不允许的
//在本站点请求外站点的资源是不允许的
$(function () {
$.ajax({
url: "http://127.0.0.1:14847/Web/jsonp.js",
success: function (data) {
console.log(data);
}
});
});
2、URL详解
http://www.baidu.com/a.html?key=1111
https://www.baidu.com:8080/a.html?key=2222
协议:http、https
域名:www.baidu.com
端口:8080 默认是80端口不显示
路径:/a.html
参数:key=2222
3、json
在页面中一般都会用ajax进行数据请求返回的是json格式,json(JavaScript Object Notation)是一种轻量级的数据交换格式,采用文本格式,兼容各大语言
表示一个对象:
{"name":"tom","sex":"F","age":"22"}
表示一组对象
[
{"name":"tom","sex":"F","age":"22"},
{"name":"jim","sex":"M","age":"21"}
]
4、jsonp
JSONP(JSON with Padding)是JSON的一种“使用模式”,主要用于解决浏览器的跨域数据访问的问题
采用一种变通的方法解决跨域请求的限制
在ajax请求中出于安全考虑是绝对不允许跨域请求;
但是有些确可以跨域请求例如:<img> <script> <style>这些标签是可以实现跨域请求的,不然也实现不了CDN请求;
//jsonp主要就是通过<script>嵌入外站点的js代码实现跨域请求,但是目标js文件不能直接输出json数据了;
//需要定义一个方法名,以参数的形式来调用,例如下面所示
//在目标js文件中定义了一个jsonp_20150316方法 括号号内的是参数
//在当前页引用时就通过参数的形式得到数据,从而实现了跨域请求 <script type="text/javascript">
// 得到航班信息查询结果后的回调函数
var jsonp_20150316 = function (data) {
console.log(data["name"]);
console.log(data["sex"]);
console.log(data["age"]);
}; var url = "http://127.0.0.1:14847/Web/jsonp.js?callback=flightHandler";
//jsonp_20150316({ "name": "tom", "sex": "F", "age": "22" });
//以下是动态引用目标请求文件 等价于<script src="http://127.0.0.1:14847/Web/jsonp.js" type="text/javascript"></script>
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
</script> //http://127.0.0.1:14847/Web/jsonp.js?callback=flightHandler
jsonp_20150316({ "name": "tom", "sex": "F", "age": "22" });
js中ajax如何解决跨域请求的更多相关文章
- 原生js封装ajax,实现跨域请求
描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...
- Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题
webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...
- 外部调用mvc的api方法时,如何解决跨域请求问题?
首先,创建一个mvc项目(包含webapi),我们模拟一个场景 1)在项目的Controller 创建一个WeiXinApiController public class WeiXinApiContr ...
- JSONP方法解决跨域请求
Ajax跨域请求的问题 跨域:跨域名, 一个域名下的文件去请求了和他不一样的域名下的资源文件(注意是请求文件,而不是数据接口),那么就会产生跨域请求,下面来写一个ajax来跨域请求的例子 <!D ...
- SpringBoot解决跨域请求拦截
前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口. 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策. 比如在域名https://www.baidu.co ...
- XMLHttpRequest.withCredentials 解决跨域请求头无Cookie的问题
查看原文 XMLHttpRequest.withCredentials 属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者 ...
- Django使用jsonp和cors解决跨域请求问题
1.使用jsonp的方式解决跨域请求的问题 我启动两个django项目,然后使用的端口不一样,在项目1中通过ajax发请求给项目2,然后接受项目2发送过来的数据 先看项目1的ajax的代码 $(&qu ...
- 使用SpringMVC的@CrossOrigin注解解决跨域请求问题
跨域问题,通俗说就是用ajax请求其他站点的接口,浏览器默认是不允许的.同源策略(Same-orgin policy)限制了一个源(orgin)中加载脚本或脚本与来自其他源(orgin)中资源的交互方 ...
- Web API中使用CORS解决跨域
Web API中使用Cros解决跨域 如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源,注:IE不考虑端口,同源策略不会阻止浏览器发送请求,但是它会阻止应用程序看到响应.如下图所示 COR ...
随机推荐
- 分析和解析PHP代码的7大工具
PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天小编就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来看看吧 ...
- Passing JavaScript Objects to Managed Code
Silverlight If the target managed property or input parameter is strongly typed (that is, not typed ...
- SQL SERVER 常用字符类型的区别
长度为 n 个字节的固定长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为 n 个字节.char 在 SQL-92 中的同义词为 character. ...
- asp程序调试
最近一直在开发asp的接口.调试一个很大的工作量.每次都让人疯狂.asp当中的提取方式时,因为没有智能提示能工具,很容易丢掉参数.而且,因为是弱类型,可以直接定义使用,不强制声明,看似很方便.很容易出 ...
- BZOJ 2115 Xor(抑或值最大路径)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2115 题意:给出一个带权无向图.求一条1到n的路径使得路径上权值的抑或值最大? 思路:( ...
- HDU 4664 Triangulation(SG函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664 题意:给出一个n个点的凸包(不存在三点共线).每次可以选择两个点连线,但是任意两条线只能在顶点处 ...
- MySQL 字段常用操作 添加,修改,删除,调整字段顺序
整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型 默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_sou ...
- [HDOJ2512]一卡通大冒险(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 给一个数n,问1~n这n个数内的划分.设dp(i,j)为i划分为j个集合时有多少个. 初始化条件 ...
- Eclipse常用的插件安装
嫌公司用的eclipse不爽,准备自己弄一个,diy的,没想到装插得烦死人. 诱惑人的“常用插件”: (1) AmaterasUML 介绍:Eclipse的UML插件,支持UML活 ...
- 采用RPC方式和document方式 开发Axis2的WebService客户端
import javax.xml.namespace.QName; import org.apache.axiom.om.OMAbstractFactory; import org.apache.ax ...