Ajax

跨域 jsonp

2019-01-17  本文已影响64人  squidbrother

//简述

[定义]

1. 基于浏览器的安全考虑,由于同源策略的限制,不同域名、不同端口、不同协议的对象不能互相调用。

(其实浏览器成功发送请求并拿回了数据 只是浏览器的同源策略 禁止了获取 )

2.App请求接口类似于C/S不存在跨域问题。

[表现:]

同源策略限制了一下行为:

1.Cookie、LocalStorage 和 IndexDB 无法读取

2.DOM 和 JS 对象无法获取

3.Ajax请求发送不出去

//前端

//传递参数

var vin='lgbh12e08fy367896';

//自定义的jsonp回调函数

window.testCallBack = function(data){

//处理回调

}

$("#getcarinfo").click(function(){

$.ajax({

type: "get",

async: false,

url: "http://www.runoob.com/try/ajax/jsonp.php",  //示例demo的PHP环境接口

//可以带参数传到后台

//url: "http://wenhao2018.hello2game.com/game/getDailei?bundleid=id.id.id&companycode=doctordai",

data: { vin: vin },

dataType: "jsonp",

jsonp: "jsoncallback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)

//自定义回调

//jsonpCallback: "testCallBack", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

success: function (json) { //在此之前若没有定义回调函数success_jsonpCallback2则执行下面的代码

alert(json[0]);

},

error: function () {

alert('fail');

}

});

});

//后端

<?php

header('Content-type: application/json');

//获取回调函数名

$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);

//json数据

$json_data = '["customername1","customername2"]';

//输出jsonp格式的数据

echo $jsoncallback . "(" . $json_data . ")";

?>

上一篇下一篇

猜你喜欢

热点阅读