环境:

win7_x64旗舰版、Google Chrome-v44.0.2403.155、node-v0.10.29、express-v3.2.5、jQuery-v1.8.3

一、跨域GET:

客户端添加jQuery扩展函数getJSONP

$.getJSONP = function (url, data, callback) {
  $.getJSON(url + "?callback=?", data, callback);
};

调用:

$.getJSONP("www.xxx.com/test", {name1: param1, name2: param2}, function(data, status) {});

二、跨域POST:

客户端添加jQuery扩展函数postJSONP

$.postJSONP = function (url, data, callback) {
$.ajax({
type: "POST",
url: url,
data: d ata,
success: callback,
xhrFields: { withCredentials: true }, //将withCredentials属性设置为true,可以指定请求应该发送凭据(cookie、HTTP认证及客户端SSL证明等)
crossDomain: true
});
};

服务端添加响应函数:

router.post("/test", function (req, res) {
res.setHeader("Access-Control-Allow-Credentials", true);
if (req.headers.origin != undefined) {
res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
}
res.jsonp(result);
//如果客户端不能接收返回数据,我们可以添加一个返回页面(login_result.html),并传递参数("status=true"),在返回的页面中添加js函数执行
  //res.redirect("./../login_result.html?status=true");
}

调用:

$.postJSONP("www.xxx.com/test", {name1: param1, name2: param2}, function(data, status) {});

三、跨域登录:

在html中添加

<iframe id="login" src="" style="display: none"></iframe>

在文档加载完成后,向跨域登录地址请求登录,登录成功后会获得Cookies

var param = document.location.search.substr(1); // 从当前页面获取登录信息,然后提交给跨域登陆地址
$("#login").attr("src", "www.xxx.com/login.html?"+ param);

最后:

在express-v3.2.5中,我们可以这样使用路由中间件app.use("/xxx", router.middleware),而在express-v4.x.x中z直接app.use("/xxx", router)就可以了。

web跨域问题的更多相关文章

  1. web跨域访问,session丢失的问题

    web跨域访问,session丢失的问题25 http://www.iteye.com/problems/71265 http://www.iteye.com/topic/264079 具体情况如下: ...

  2. Web跨浏览器进程通信(Web跨域)

    Web跨域已是老生常谈的话题,这次来尝试下跨域浏览器进程之间的通信 —— 这在过去基本依靠网络中转实现   在之前一篇文章里尝试了跨浏览器的数据共享,最后提到使用LocalConnection还可以实 ...

  3. web跨域及cookie相关知识总结

    原文:web跨域及cookie相关知识总结   之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助. 本篇主要 ...

  4. web跨域问题回顾

    晚上看spring web源码时看到了cors包,查了一下原来是在4.2之后新加的用来更方便让web应用服务支持cors协议的.于是有了下面几个问题. web跨域问题的起源是因为浏览器为了安全而遵循的 ...

  5. Web跨域问题总结

    一.跨域问题的由来为了防止某些文档或脚本加载别的域下的未知内容造成泄露隐私,破坏系统等安全行为,1995年, Netscape 公司在浏览器中引入同源策略/SOP(Same origin policy ...

  6. web跨域解决方案

    阅读目录 什么是跨域 常用的几种跨域处理方法: 跨域的原理解析及实现方法 总结 摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识 ...

  7. cors解决Web跨域访问问题

    首先了解一下什么是跨域以及解决的几种常见方式. 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相同. 举例: 相对于 ...

  8. web跨域问题(No 'Access-Control-Allow-Origin'..)

    1. 问题 angular开发中连接java服务时出现跨域问题(No 'Access-Control-Allow-Origin'..). 如下图 解决方法 2,原因分析 这个与安全机制有关,默认情况下 ...

  9. Web 跨域请求(OCRS) 前端解决方案

    1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.j ...

  10. java web 跨域

    服务器端解决跨域问题的三种方法   跨域是指html文件所在的服务器与ajax请求的服务器是不同的ip+port,例如: - ‘192.168.1.1:8080’ 与 ‘192.168.1.2:808 ...

随机推荐

  1. JDBC:四步完成MySQL数据库的连接

    ->首先,将MySQL的jar包引入 ->然后创建一个.properties的文件(例:connection.properties),在该文件中写入如下代码: jdbc.driver.cl ...

  2. 使用eclipse XML catalog绑定dtd文件

    有时候我们想编辑struts或spring的xml配置文件的时候,输了“<”之后eclipse却没有提示关键字,这是因为eclipse需要到网络下载dtd文件而由于网络原因没下载下来所以无法提示 ...

  3. supervisor启动流程

    Supervisor结构: 单点结构如图: 1. 初始化时,启动进程Supervisor,根据 Nimbus分配的任务情况触发启动/停用Worker Jvm进程! 2. 每个Worker进程启动一个 ...

  4. php笔记(八)PHP类与对象之抽象类

    <?php //通过abstract关键字定义一个抽象类 abstract class ACanEat{ //通过abstract关键字定一个不用具体实现的抽象方法eat() abstract ...

  5. String to Double出现误差

    场景描述 做实际项目的时候,由于使用Double类的valueOf得到一个用String类型保存的金额参数(单位为元),当需要转换成以分为单位即整形表示(Integer类表示)时,需要用之前得到的do ...

  6. 1.1 office安装

    2013版安装链接: https://pan.baidu.com/s/1qYMuidA 密码: uj9e

  7. laravel 日志

    laravel学院的 http://laravelacademy.org/post/195.html 他人博客的 http://www.cnblogs.com/yjf512/p/4173261.htm ...

  8. Angularjs directive全面解读(1.4.5)

    说到Angularjs directive即指令,可以这么说Angularjs的灵魂就是指令,学会Angularjs指令那么你的Angularjs的武功就修炼了一半了,当然这只是鄙人的一点点独到见解, ...

  9. img的问题

    一个div的宽高比和 里面的img的宽高比是一样的 ,div  img { width:100%:height:100%;} img {border:0}   img{ 设置为border:none无 ...

  10. VPS服务器利用WINSCP软件进行SFTP管理服务器文件

    虽然我使用VPS时间也不是很久,但是我善于进行统计和分析,从我在的一些VPS交流QQ群中,可以看到基本上使用搬瓦工VPS的站长群中新手较多,甚至很多人都搞不明白VPS与V-P-N的区别都直接选择VPS ...