【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以

2024-08-31 03:48

本文主要是介绍【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于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格式。

这篇关于【跨域Jsonp】是否可以用jsonp完成跨域? nodejs发布的服务可以的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122806

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编