关于jsonp跨域的问题以及解决方法(跨域、同源与非同源)
什么是跨域?
想要了解跨域,首先需要了解下浏览器的同源机制:
JSONP和AJAX相同,都是客户端向服务器端发送请求:给服务器端传递数据 或者 从服务器端获取数据 的方式
JSONP属于非同源策略(跨域请求) ->实现跨域请求的方式有很多种,只不过JSONP是最常用的
区分同源和非同源:
用当前页面的地址 && 数据请求的接口地址
1)协议2)域名或者IP3)端口号以上三部分完全相同属于同源策略,我们使用AJAX技术获取数据;只要有一个不一样的,就属于非同源,我们一般使用JSONP获取数据;
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
http://www.123.com/index.html 调用 http://www.123.com/server.PHP (非跨域)
http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。
解决办法:
1、JSONP:
使用方式就不赘述了,但是要注意JSONP只支持GET请求,不支持POST请求。
2、代理:
例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。
3、PHP端修改header(XHR2方式)
在php接口脚本中加入以下两句即可: header('Access-Control-Allow-Origin:*');//允许所有来源访问 header('Access-Control-Allow-Method:POST,GET');//允许访问的方式
转载于:https://www.cnblogs.com/Scar007/p/7601121.html
关于jsonp跨域的问题以及解决方法(跨域、同源与非同源)相关推荐
- 浏览器禁止跨域请求json数据解决方法--jsonp
浏览器禁止跨域请求json数据解决方法--jsonp 参考文章: (1)浏览器禁止跨域请求json数据解决方法--jsonp (2)https://www.cnblogs.com/uyisi/p/56 ...
- PHP解决http和https跨域,php中http与https跨域共享session的解决方法
这篇文章主要介绍了http与https跨域共享session的解决方法,需要的朋友可以参考下 遇到了HTTP.HTTPS协议下session共享解决cookie失效的问题,这里提供一个临时解决办法. ...
- kuayu react_React+Spring实现跨域问题的完美解决方法
最近小编在学习react,在学习过程中遇到React+Spring实现跨域问题,下面小编记录了整个问题过程,给大家做个参考. react 跨域访问后台,默认是有跨域问题,并且火弧和谷歌浏览器,对跨域问 ...
- 造成跨域的原因和解决方法
造成跨域的原因和解决方法 参考文章: (1)造成跨域的原因和解决方法 (2)https://www.cnblogs.com/wangpenghui522/p/6284355.html 备忘一下.
- 跨域问题及常见解决方法---以 Geoserver 为例
跨域问题及常见解决方法---以 Geoserver 为例 跨域问题 跨域简介 解决跨域常用方法 前端代理 后端处理 其他代理(nginx) Geoserver 解决跨域 免费解决跨域工具:[geose ...
- 查找计算机 域服务不可用,win7系统打印文件提示Active Directory域服务不可用解决方法...
办公用户因为工作需要,就需要安装打印机,也是办公设备中不可缺少一部分,使用过程中难免遇到一些故障问题,Win7系统打印文件时频繁弹出提示"Active Directory域服务当前不可用&q ...
- Java后端带参跨域访问_java后端解决请求跨域
跨域 跨域:指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制. 例如:a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同 ...
- 跨域的知识和解决方法
1.https://segmentfault.com/a/1190000000709909 2.https://blog.csdn.net/qq_38128179/article/details/84 ...
- 域 无法管理计算机,计算机无法加入域的终级解决方法
计算机无法加入域|不能联系域控制器 1.您无法用NetBois域名加入域. 2.组策略无法正常应用. 3.无法打开网上领居和访问共享文件. 这个问题有可能是Wins服务器没有正确配置或TCP/IP N ...
最新文章
- 图解 SQL,这也太形象了吧!
- 2015年十佳IDC评选结果:50强名单揭晓
- 神经网络的物理学解释(一)---权重与概率幅
- OTA江湖浪潮再起,世界邦的出境定制自由行之路难以亨通?
- 使用QSerialport读取串口数据并处理
- 嵌入式开发中模拟SPI的驱动
- 奇妙的安全旅行之DES算法(二)
- vue点击ul中的li显示,点击其他地方隐藏
- 面向科研的推荐系统Benchmark诞生!
- 这五个有用的 CSS 属性完全被我忽视了
- sqlmap使用教程(超详细)
- VS2010快捷键设置
- UL -758_2022电器布线电线电缆安全标准,刚刚发行最新版
- mac系统如何获取最好权限删除顽固文件?
- php阴阳万年历转换的接口,用php写的阴阳万年历
- 三菱系统四轴正反转参数_三菱第四轴参数
- Location is not available,the folder or directory is corrupted and unreadable
- python无限制邮件群发软件_收藏 - 使用Python通过SMTP协议群发/单发邮件方法
- 公派访问学者申请签证的五点建议
- android 存储盘 dcim,DCIM是个啥?安卓图片存储位置指南