jsonp和CORS跨域实现
一、jsonp,使用jquery封装的$.ajax,返回数据类型要设置为jsonp
示例:
$.ajax({
type: 'get',
contentType: "application/json; charset=utf-8",
url: "http://localhost:8080/aqi/getCityList.php",
dataType: 'jsonp',
< /span>
jsonp: "callback",/ / 传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为: callback)
jsonpCallback: "success_jsonpCallback", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名</span>
success: function(json) {
getCityListSuccess(json);
},
error: function(data, textStatus, errorThrown) {
console.log("error" + ' ' + JSON.stringify(data) + textStatus + errorThrown);
}
});或者使用
$.getJson, 在调用的url添加 & callback = ? $.getJSON("http://localhost:8080/aqi/getDetailsByTimepointAndCityId.php?callback=?", {
"time_point": time_point,
"city_id": city_id
}, function(json) {
$('#radar-dialog').css("display", "block");
$('#radar-dialog').dialog({
title: radar_cityname + "市," + timepoint,
width: 350,
});
formatRadarData(json);
});
PHP端的代码为:
<?php
header("Content-Type: text/html;charset=utf-8");
$db_name="aqidata.db";
$conn = new sqlite3($db_name);
$callback = $_GET['callback'];
$resultarray=array();
$sql = "select * from 'city' where 1=1 order by id";
$result = $conn->query($sql);
$i=0;
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$resultarray[$i]=$row;
$i++;
}
echo $callback.'('.json_encode($resultarray).')';
?>
注意:1、ajax中要指定jsonp参数,然后后端要把回调函数名称写入到返回值中。
我参考的博文是:http://www.cnblogs.com/xcxc/p/3729660.html
二、用CORS(Cross-Origin Resource Sharing),这个官方草案。
就是在后端代码(php)加入:
header("Access-Control-Allow-Origin:*");
jsonp和CORS跨域实现的更多相关文章
- jsonp与cors跨域的一些理解
浏览器的同源策略,即是浏览器之间要隔离不同域的内容,禁止互相操作. 比如,当你打开了多个网站,如果允许多个网站之间互相操作,那么其中一个木马网站就可以通过这种互相操作进行一系列的非法行为,获取你在各个 ...
- jsonp与cors跨域的一些理解(转)
CORS其实出现时间不短了,它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的. ...
- 4 伪ajax:jsonp、cors 跨域请求
一.同源策略 https://www.cnblogs.com/yuanchenqi/articles/7638956.html 同源策略(Same origin policy)是一种约定,它是浏览器最 ...
- django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享
一.jQuery Ajax 和 原生Ajax from django.conf.urls import url from django.contrib import admin from app01 ...
- 跨域漏洞丨JSONP和CORS跨域资源共享
进入正文之前,我们先来解决个小问题,什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 跨域常见的两种方式,分别是JSONP和CORS. 今天i ...
- 图片ping、JSONP和CORS跨域
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<由外边距合并到BFC> 作者主页:myvin 博主QQ:851399101(点击QQ和博主发起临时会话 ...
- 使Asp.net WebApi支持JSONP和Cors跨域访问
1.服务端处理 同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的DOM,“跨源”操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针 ...
- jsonp与cors跨域解析
1.浏览器的同源安全策略 没错,就是这家伙干的,浏览器只允许请求当前域的资源,而对其他域的资源表示不信任.那怎么才算跨域呢? 请求协议http,https的不同 域domain的不同 端口port的不 ...
- JSONP跨域和CORS跨域
什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名.协议.端口均相同. 浏览器执行JavaScript脚本时,会检查这 ...
随机推荐
- toast提示信息获取
toast获取的前提条件 1.desired_caps["automationName"]="UiAutomator2"2.要求安装jdk1.8 64位及以上. ...
- Asp.net mvc 动作方法中 调用 另一个控制器的动作方法
public ActionResult 动作方法(){ var otherController = DependencyResolver.Current.GetService<另一个控制器的类名 ...
- 五、Redis持久化配置
转载:[https://www.cnblogs.com/xingzc/p/5988080.html] Redis提供的持久化机制(RDB和AOF) Redis提供的持久化机制 Redis是一种面向“k ...
- 为什么qt成为c++界面编程的第一选择
为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...
- 代理与hook
参考:Java 动态代理 代理是什么 为什么需要代理呢?其实这个代理与日常生活中的“代理”,“中介”差不多:比如你想海淘买东西,总不可能亲自飞到国外去购物吧,这时候我们使用第三方海淘服务比如惠惠购物助 ...
- java网页爬数据获取class中的空格
<ul class=""> <li class="avatar_img"><img src="http://avatar ...
- Nginx从入门到实践(三)
动静分离 动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问. 动静分离的一种做法是将静态资源部署在nginx上, ...
- codeforces850E Random Elections
题目链接:codeforces 850E 翻译:luogu 读题是第一要务(大选这么随便真的好吗) 其实答案问你的就是在所有选民心中支持的人的所有情况中,能让一个人连赢两场的情况数是多少 我们假设\( ...
- vim常用快捷键整理
搜索快捷键 / 关键字n 向下匹配N 向上匹配 移动光标快捷键 gg 命令将光标移动到文档开头,等同于 1GG 命令将光标移动到文档末尾0 或功能键[Home] 这是数字『 0 』:移动到这一行的最 ...
- 【dp】合唱队形
题目描述 NN位同学站成一排,音乐老师要请其中的(N-KN−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为 ...