jsonp跨域原理

json和jsonp的区别

json是一种基于文本的数据交换方式,或者叫做描述数据的一种格式。

var person = {

"name": "test",

"age": "25",

"sex": "男"

};

var data = [1, 2, 3, 4, 5];

而jsonp是一种非官方跨域数据交互协议,该协议允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

比如我在a.com的网站上引用了b.com的一个b.js,但这样跨域的引用并不会产生错误,说明调用js文件时不受跨域的影响。

那么我们在b.js里添加如下代码,看看是否能够执行

alert("I from b");

确定是可以执行。

请求方式

如果使用jsonp进行跨域请求,所用到的请求方式只能是 get,在php后台接收不到$_POST的请求数据。

实例

jsonptest.html 页面主要代码

$(function(){

$.ajax({

url : "http://ip/jsonpreturn.php", // 远程IP地址或域名

dataType:"jsonp",

data:{

"name":"xiaoming",

"pass":"123456"

},

type:"post", // 就算使用post,在浏览器中也会变成get方式

jsonp:"callback",

timeout: 5000,

success:function(data){

console.log(data);

},

error:function(XHR, textStatus, errorThrown){

console.log('error: ' + textStatus);

console.log('error: ' + errorThrown);

}

});

});

jsonpreturn.php主要代码

$name = $_GET['name']; // _POST接收不到数据

$pass = $_GET['pass'];

$jsonp = $_GET['callback'];//get接收jsonp自动生成的函数名

$arr = array(

'name' => $name,

'pass' => $pass

);

echo $jsonp.'('. json_encode($arr). ')'; //jsonp函数名包裹json数据

?>

php 跨域 json,jsonp+php实现跨域相关推荐

  1. 【综合】JS跨域方案JSONP与CORS跨域

    缘由: 因为浏览器的同源策略,即是浏览器之间要隔离不同域的内容,禁止互相操作,提高安全性. 为何要跨域: 有时候你想通过自己的网站去获取另一个自己的网站的一些资料信息,但是由于两者域名不同,所以就被同 ...

  2. php json -gt;访问,【转】Php+ajax+jsonp解决ajax跨域问题

    首先:jsonp是json用来跨域的一个东西. 原理是通过script标签的跨域特性来绕过同源策略. 发送端: $.ajax({ type : "post", url : &quo ...

  3. JSONP实现Ajax跨域请求

    前言 由于浏览器存在同源策略的机制,所谓同源策略就是阻止从一个源(域名,包括同一个根域名下的不同二级域名)加载的文档或者脚本获取/或者设置另一个源加载的文档属性. 但比较特别的是:由于同源策略是浏览器 ...

  4. jquery Ajax 通过jsonp的方式跨域提交表单

    Jquery Ajax可以通过jsonp的方式跨域提交表单,至于什么是跨域提交简单说就是你的客户端和服务端不在同一个域名下或端口号不同也可以叫做跨域. 前台代码: $.ajax({type : 'ge ...

  5. jQuery(三) javascript跨域问题(JSONP解决)

    加油~ --WH 一.什么是javascript跨域问题? 域:服务器域名,唯一标识(协议,域名,端口)必须保证一致,说明域相同 跨域:在一个服务器上,去访问另一个服务器上,并且得到另一个服务器返回回 ...

  6. jsonp解决ajax跨域问题,用JSONP解决ajax跨域问题

    JSONP:JSON With Padding 要点: 1.script标签 2.用script标签加载资源是没有跨域问题的 概要: 在资源加载进来之前先定义一个函数,这个函数接受一个参数(数据),函 ...

  7. jsonp跨域原理_Rust 搭建可跨域访问服务器JsonP(一)

    最近有一个项目极有可能需要一个可跨域的服务器做一个中转,思来想去决定用Rust来实现这个服务器,因为有如下优点. 1.编译体积小 2.跨平台 3.安全性较高 JsonP(JSON with Paddi ...

  8. php csrf jsonp,读取型CSRF(JSONP劫持、CORS跨域资源读取、Flash跨域劫持)

    我们只熟悉写入型csrf,像修改用户信息--今天介绍一下读取型CSRF,使用DoraBox这个靶场来演示一波! 地址:https://github.com/Acmesec/DoraBox JSONP劫 ...

  9. php cors和jsonp,jsonp和CORS跨域实现

    搜索热词 写js时总是会遇到跨域请求的问题,现在了解了两种方法,记录之: 1)jsonp,使用jquery封装的$.ajax,返回数据类型要设置为jsonp,示例: $.ajax({ type: 'g ...

最新文章

  1. 力扣(LeetCode)刷题,简单题(第11期)
  2. 运行时常量池在哪里_Java虚拟机详解(二)------运行时内存结构
  3. 关于Sqlserver中 BCP命令,实现数据导出功能。
  4. java 自动封装_自动补全的java封装
  5. 元宇宙:Facebook正式改名为Meta,要砸600亿做这件事
  6. python json unicode_python2下解决json的unicode编码问题
  7. mockito接口_什么是Mockito Extra接口?
  8. SpringBoot使用外置的Servlet容器
  9. ai怎么画路线_使用AI画一个离心管
  10. QAQ来自弱鸡的嘲笑
  11. 树莓派4B使用移远EC20带GPS 4G模块ppp拨号上网
  12. python矢量图_使用python制作矢量图
  13. win10wifi多了数字_Win10 技巧:如何修改有线 / WiFi 网络优先级?
  14. 国家代码查询(Country codes)
  15. spring集成kafka运行时报错:Failed to construct kafka producer] with root cause
  16. 牛客SQL练习-39-针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引
  17. OpenStack Swift学习笔记
  18. 君子博学而日参省乎己,则知明而行无过矣
  19. 养老服务机构引入电子签章推动养老合同在线签
  20. NUIST萌萌新的比赛纪录

热门文章

  1. mysql中写一个循环语句_mysql 如何写循环语句
  2. Vue引入第三方js库
  3. 6.12C++:继承基类的构造函数、单继承的构造函数、多继承的构造函数、派生类复制构造函数、派生类的析构函数
  4. 通过《The BIG Talk》对虚拟现实发展的“视频”体验
  5. VLC-Android编译
  6. AI设计“超级食物”:可能有助于预防癌症!
  7. php 关闭当前网页代码,js实现关闭网页的代码
  8. 获取系统时间GetSystemTime、GetLocalTime、GetTickTime
  9. Centos7.5升级内核至5.10
  10. Ubuntu试用模式下怎么获取root权限?