ajax jsonp跨域 【转】
跨域的基本原理:
JSONP跨域GET请求是一个常用的解决方案,
JSONP的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的。这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了。
需要ajax跨域请求,用cors跨域方案。
服务端设置:
header('Access-Control-Allow-Origin: http://front.ls-la.me');
header('Access-Control-Allow-Headers: X-Requested-With');
设置了:
后端需要的头信息,原生ajax以表单方式post提交数据,json数据data转换成key1=val1&key2=val2 的字符串格式
1 var ajaxHdFn = function(uri, data, cb) {
2 var getXmlHttpRequest = function() {
3 if (window.XMLHttpRequest) {
4 //主流浏览器提供了XMLHttpRequest对象
5 return new XMLHttpRequest();
6 } else if (window.ActiveXObject) {
7 //低版本的IE浏览器没有提供XMLHttpRequest对象
8 //所以必须使用IE浏览器的特定实现ActiveXObject
9 return new ActiveXObject("Microsoft.XMLHttpRequest");
10 }
11
12 };
13 var xhr = getXmlHttpRequest();
14 xhr.onreadystatechange = function() {
15 console.log(xhr.readyState);
16 if (xhr.readyState === 4 && xhr.status === 200) {
17 //获取成功后执行操作
18 //数据在xhr.responseText
19 var resJson = JSON.parse(xhr.responseText)
20 cb(resJson);
21 }
22 };
23 xhr.open("post", uri, true);
24 xhr.setRequestHeader("DeviceCode", "56");
25 xhr.setRequestHeader("Source", "API");
26 xhr.setRequestHeader("Authentication", "72b32a1f754ba1c09b3695e0cb6cde7f");
27 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
28 var dataStr = '';
29 for (var i in data) {
30 if (dataStr) {
31 dataStr += '&';
32 }
33 dataStr += i + '=' + data[i];
34 }
35 xhr.send(dataStr);
36 };
这样设置,可以直接传json字符串给后端。后端也要做相应处理。
跨域相关内容
CORS跨域的常见问题以及前后端的设置:
《Ajax——CORS跨域调用REST API 的常见问题以及前后端的设置》
data = JSON.stringify(data);
xhr.setRequestHeader("Content-Type","application/json");
ajax jsonp跨域 【转】的更多相关文章
- jQuery的ajax jsonp跨域请求
了解:ajax.json.jsonp.“跨域”的关系 要弄清楚以上ajax.json.jsonp概念的关系,我觉得弄清楚ajax是“干什么的”,“怎么实现的”,“有什么问题”,“如果解决存在的问题”等 ...
- jquery ajax jsonp跨域调用实例代码
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...
- ajax jsonp跨域
js跨域问题是指:js不同域进行数据传输或通信之间,让我们用ajax到不同的域请求数据.或js获得在不同领域的框架页(iframe)数据.只有到协议.域名.port无论是有不同的.它们被认为是不同的域 ...
- Ajax jsonp 跨域请求实例
跨域请求 JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求:它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题. $. ...
- JQuery+ajax+jsonp 跨域访问
Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料. 关于Jsonp更详细的资料请参考http://baike.baidu.com/ ...
- AJAX.JSONP 跨域
var Request = { timeout: 10 * 1000, // 10秒超时 status: 10, statusenum: { Wait: 10 ...
- ajax jsonp跨域处理问题
客户端 html $.ajax({ type : "get", async:false, dataType : "jsonp", jsonp: "js ...
- ajax jsonp 跨域请求
$.ajax({ type:"get", url: "http://localhost/test/a.php", dataType: "jsonp&q ...
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
随机推荐
- JVM系列五(javac 编译器).
一.概述 我们都知道 *.java 文件要首先被编译成 *.class 文件才能被 JVM 认识,这部分的工作主要由 Javac 来完成,类似于 Javac 这样的我们称之为前端编译器: 但是 *.c ...
- cogs 2. 旅行计划 dijkstra+打印路径小技巧
2. 旅行计划 ★★ 输入文件:djs.in 输出文件:djs.out 简单对比时间限制:3 s 内存限制:128 MB [题目描述] 过暑假了,阿杜准备出行旅游,他已经查到了某些城市 ...
- 关于Log4Net的使用及配置方式
目录 0.简介 1.安装程序包 2.配置文件示例 3.日记的级别:Level 4.日志的输出源:Appenders 5.日志格式:Layout 6.日志文件变换方式(回滚方式):RollingStyl ...
- 安装mysql8.0.17指南
1.首先,下载社区版mysql(下载地址https://dev.mysql.com/downloads/mysql/) 2.下载之后,将文件解压到自己想要安装的目录(如,本人将解压文件放置g://my ...
- LeetCode 第三题--无重复字符的最长子串
1. 题目 2.题目分析与思路 3.思路 1. 题目 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3 ...
- form get
<form action=""> <input type="text" name="query" id="&qu ...
- Java入门 - 导读
原文地址:http://www.work100.net/training/java 更多教程:光束云 - 免费课程 Java入门 Java 是由 Sun Microsystems 公司于1995年5月 ...
- UIKit, AppKit, 以及其他API在多线程当中的使用注意事项
UIKit, AppKit, 以及其他API在多线程当中的使用注意事项 Overview The Main Thread Checker is a standalone tool for Swift ...
- [集训]dance
题意 http://uoj.ac/problem/77 思考 显然能转化为最小割模型.若没有pi的代价,则对于第i个格子,可以让源点连向第i个点,容量为黑色收益,再连向汇点,容量为白色收益.再考虑pi ...
- 架构模式中的Active Record和Data Mapper
架构模式中的Active Record和Data Mapper 概念 在简单应用中,领域模型是一种和数据库结构一致的简单结构,对应每个数据库表都有一个领域类,在这种情况下,有必要让每个对象负责数据库的 ...