【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以
来源:互联网 发布:西北师范大学知行 编辑:程序博客网 时间:2024/06/05 20:33
关于jsonp跨域的原理参考其他日志。
1、jsonp跨域只能为get,不能为post。靠url传递数据
2、soap协议的 好像不能使用jsonp,他返回的始终是xml,不能以js的方式返回,会出现错误:不能解析xml为js。
3、用nodejs写一个http服务,用jsopn是否可以跨域:可以!!
服务端的代码为:
var http = require('http'); var urllib = require('url'); var port = 10011; var data = {'name': 'jifeng', 'company': 'taobao'}; http.createServer(function(req, res){ var params = urllib.parse(req.url, true); console.log(params); if (params.query && params.query.callback) { //console.log(params.query.callback); var str = params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp res.end(str); } else { res.end(JSON.stringify(data));//普通的json } }).listen(port, function(){ console.log('server is listening on port ' + port); })
前端的代码为:
<html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <script type="text/javascript"> function get_jsonp() { $.getJSON("http://10.232.36.110:10011?callback=?", function(data) { $('#result').val('My name is: ' + data.name); }); } </script> <a href="javascript:get_jsonp();">Click me</a><br /> <textarea id="result" cols="50" rows="3"></textarea> </body> </html>
此时也可以在服务端设置允许跨域,方式如下:
res.writeHead(200, { 'Content-Type': 'application/json;charset=utf-8', 'Access-Control-Allow-Origin': '*' });
但是当我采用java+axis+tomcat时,此时不可以用这种方法实现跨域,因为此时的webservice遵从soap协议,以xml格式交互数据。而jsonp要求返回的数据为js格式,因此无法控制。
不过可以看看用action或者servlet写服务端。
也就是说:当前端希望采用jsonp方式实现跨域时(只能是get方式),后端要根据url判断是否有callback,有的话要返回js格式。
0 0
- 【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以
- 用nodejs实现json和jsonp服务
- 用nodejs实现json和jsonp服务
- jsonp(跨域)-------可以运行的小实例!
- jsonp跨域访问服务
- nodejs jsonp跨域使用 服务器端
- 跨域的jsonp
- 使用jsonp方式完成跨域资源的访问(struts2)
- Jsonp完成js跨域请求
- [jQuery]可以利用浏览器缓存的jsonp调用方式
- JSONP跨域的说明
- jsonp的跨域访问
- jsonp 跨域的使用
- Jsonp的跨域实现
- Jsonp跨域的demo
- jsonp跨域的安全问题
- AJAX的跨域----JSONP
- JSONP的跨域请求
- 漫步数学分析八——集合边界
- input子系统四 input事件处理
- new JSONArray(List<Map>).tostring()问题
- Android源码-WirelessSettings之NFC小结
- PDO操作mysql的类
- 【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以
- MJExtension.h 的常见用法
- JSON
- kibana3连接失败Connection Failed
- centos7下安装flocker的一些问题即步骤
- sublime 使用eclipse快捷键
- LeetCode OJ-46.Permutations(全排列问题)
- Gradle build-info.xml not found for module app. Please make sure that you are using gradle plugin '2
- 简述aidl的用途