为什么会有跨域问题? - 因为有同源策略
同源策略是浏览器的一种安全策略,所谓同源指的是 请求URL地址中的 协议, 域名 和 端口 都相同,只要其中之一不相同就是跨域
同源策略主要为了保证浏览器的安全性
在同源策略下,浏览器 不允许 Ajax跨域获取服务器数据
http://www.example.com/detail.html
跨域请求:
ajax的基本概念
了解这个概念,首先得先知道同步交互与异步交互
ajax主要的应用场景:页面不刷新,就可以与服务器进行动态的数据交互
交互的原理
我们所有的交互操作都可以通过这个对象来完成,发送请求,接受服务器的数据
ajax的具体应用场景
XMLHttpRequest 交互的四个步骤
1,实例化XMLHttpRequest 对象
2,想和服务器进行交互,必须和服务器打开一个连接
3,给服务器发送数据,发送参数数据到服务器
4,接受服务器返回的数据,服务器在返回给客户端的时候会返回一些状态,可以通过监听服务器状态的改变,来更好的操控整个交互流程
ajax跨域
跨域:假设我访问 a 站点,后台返回给我一个页面,然后我又想在 a 站点的这个页面去访问 b 站点的资源,这就是一个跨域的效果,跨域浏览器是有安全限制的
解决·跨域的方式:jsonp方式
JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。如要在 a.com 域下获取存在 b.com 的 JSON 数据( getUsers.JSON ):
jsonp解决跨域的本质原理:由于浏览器有同源限制,不同站点之间不能相互访问,但是有时候我们就是想要获取其他站点的数据,比如加入我们想要获取一下急速数据的天气预报数据,这肯定跨域了,那么我们该怎么办呢?
原理:就是动态创建<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。
这样在后台就可以获取到前台传过来的那个回调函数,,最后后台返回这个函数的调用,参数为前台请求的数据
jshtml" target="_blank">代码
<script type="text/javascript"> function handleResponse(response){ console.log(response); } </script> <script type="text/javascript"> window.onload = function() { var oBtn = document.getElementById('btn'); oBtn.onclick = function() { var script = document.createElement("script"); script.src = "https://api.douban.com/v2/book/search?q=javascript&count=1&callback=handleResponse"; document.body.insertBefore(script, document.body.firstChild); }; }; </script>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍原生js的ajax和解决跨域的jsonp(实例讲解),包括了原生js的ajax和解决跨域的jsonp(实例讲解)的使用技巧和注意事项,需要的朋友参考一下 最近慢慢感觉,学再多框架,库,都不如老老实实先把基础弄扎实了。 不说废话,先上一个用ajax请求下本地的一个.txt文件 执行效果如下,点击show就会通过ajax请求本地的.txt文件。 代码比较简单,加上注释,相信很容易就看得懂
本文向大家介绍原生JS封装Ajax插件(同域、jsonp跨域),包括了原生JS封装Ajax插件(同域、jsonp跨域)的使用技巧和注意事项,需要的朋友参考一下 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习。。。 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的。。。简单说说思路,如有不正确的地方,还望指正^_^ 一、Ajax核
问题内容: 我们的客户要求我们为其站点提供Widgits。他们想链接到我们以获得Html和操纵Html并执行异步请求所需的jQuery。我知道存在跨域安全限制,可以防止这种情况的发生,但是通过使用JSONP作为数据传输格式可以缓解其中的一些限制。 我很难找到关于我要达到的目标的可能解释。有人可以帮我吗? 问题答案: 简而言之,所有AJAX请求(和跨窗口脚本)都应遵循Same Origin Poli
本文向大家介绍详细解密jsonp跨域请求,包括了详细解密jsonp跨域请求的使用技巧和注意事项,需要的朋友参考一下 1.什么是跨域请求: 服务器A上的一个页面,要请求服务器B上的一个处理程序,这就叫做跨域请求 本次的测试页面为: 处理程序kimhandler.ashx,如下: 另一张处理程序handler.ashx如下: 2.Ajax无法实现跨域请求 查看监视器,发现没有返回任何请求报文体 3.使
本文向大家介绍使用jquery的jsonp如何发起跨域请求及其原理详解,包括了使用jquery的jsonp如何发起跨域请求及其原理详解的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍的是关于jquery jsonp发起跨域请求及其原理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的。 浏
本文向大家介绍AJAX实现跨域的三种方法(代理,JSONP,XHR2),包括了AJAX实现跨域的三种方法(代理,JSONP,XHR2)的使用技巧和注意事项,需要的朋友参考一下 域: 域是WIN2K网络系统的安全性边界。我们知道一个计算机网最基本的单元就是“域”,这一点不是WIN2K所独有的,但活动目录可以贯穿一个或多个域。在独立的计算机上,域即指计算机本身,一个域可以分布在多个物理位置上,同时一个