最近做开发时要把图片文件放到另外一台服务器上(另外一个域名),因为这样分布式存放,网站打开速度会快很多。而我采用AJAX获取图片服务器上某用户的图片时遇到了问题,按照通常的方式无法获取信息,得到的Cookie都是null,后来想到浏览器出于安全考虑JavaScript和iframe不能跨域访问,那我们就要考虑使用其他途径来完成了,捣鼓了2天终于找到了解决方案,我使用JSONP来解决,请看。

JS代码:

  1. $.ajax({

  2. type: "get",

  3. url: "http://www.oicqzone.com/userogin.aspx?jsoncallback=?",    //这里必须使用?jsoncallback=?,否则一样无法获取。

  4. data: { "name": name, "pass": pass },                           //这里是参数,可以不用

  5. dataType: "jsonp",                                              //这个一定要,如果没有你永远无法获取信息

  6. success: function(json){

  7. var obj = eval( json );                                     //这个也是必备,由于我们用JSONP对象返回,所以不需的

  8. //这里就是分解具体元素了,可以按照自己的需求设置好JSONP对象。

  9. alert("success JSON Data:" + obj.usrName + " usrId:" + obj.usrId + " rndPassWord:" + obj.rndPassWord);

  10. }

  11. });

ASP.NET代码:

  1. //注意JSON对象和值都必须使用双引号抱着,要不JS无法获得对象

  2. string strJson = Request.QueryString["jsoncallback"] +

  3. string.Format( "({{\"usrId\" : \"{1}\",\"usrName\" : \"{0}\",\"rndPassWord\" : \"{2}\"}})",

  4. Accounts.UserEntity.UserId, Accounts.UserEntity.UserName, Accounts.UserEntity.Password );

  5. context.Response.AddHeader("Access-Control-Allow-Origin", "*");

  6. Response.Write( strJson );

使用JSONP彻底解决Ajax跨域访问Cookie Session的方案的更多相关文章

  1. CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie

    1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...

  2. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

  3. 解决ajax跨域访问sessionid不一致问题

    根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为 ...

  4. ajax --- 解决ajax跨域请求导致session失效的问题

    起因:http是无状态的,因此我们通常需要用到cookie以及session来保存状态,session是在服务器端存储的,会和cookie一起使用,设置了session之后,会发送给浏览器一个cook ...

  5. jfinal 解决ajax 跨域访问--jsonp

    JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的 js无法操作b.com或是c.a.com域名下的对象. ...

  6. express解决ajax跨域访问session失效问题

    最近在学习express,就用以前做的项目来进行express前后端分离的练手了,在做登陆注册的时候发现跨域的时候,session的值是会失效的,导致session里面的数据获取为undefined, ...

  7. 黄聪:使用$.getJSON解决ajax跨域访问 JQuery 的跨域方法(服务器端为wordpress程序)

    客户端: <input id="cat" name="cat" type="hidden" value="<? ech ...

  8. ajax跨域访问http服务--jsonp

    在前面一篇文章<Spring Cloud 前后端分离后引起的跨域访问解决方案>里我们提到使用ajax跨域请求其他应用的http服务,使用的是后台增加注解@CrossOrigin或者增加Co ...

  9. 【前端_js】解决ajax跨域请求数据

    1.ajax发送请求必须遵循同源策略,即请求方和相应方的协议头.域名.端口全部一样.只要三者有一个不一样都视为跨域,浏览器出于安全考虑不允许跨域访问. 解决ajax跨域访问的常用方法: a.使用jso ...

随机推荐

  1. windows系统PHP7开启curl_init

    1.php.ini,开启extension=php_curl.dll,去掉去掉前面的“;” 2.检查php.ini的extension_dir值是哪个目录(也就是插件扩展目录,比如php_curl.d ...

  2. Jedis操作Redis--SortedSet类型 (会自然排序)

    /** * SortedSet(有序集合) * ZADD,ZCARD,ZCOUNT,ZINCRBY,ZRANGE,ZRANGEBYSCORE,ZRANK,ZREM,ZREMRANGEBYRANK,ZR ...

  3. 64位WIN7上安装11G R2 ,PLSQL的配置方法

    64位WIN7上安装11G R2 ,PLSQL的配置方法:1.       1.1. 去http://www.oracle.com/technetwork/topics/winsoft-085727. ...

  4. Struts html(标签)

    一 <html:form> <html:form>用来创建表单,<html:form>必须包含一个action属性,否则JSP会抛出一个异常. 1.常用属性: Ac ...

  5. Hive 安装

    在安装Hive时,一定要在该机器上添加了hadoop服务. 下载并解压文件 tar zxvf apache-hive-3.1.1-bin.tar.gz mv apache-hive-3.1.1 /op ...

  6. WPF中设置了WindowStyle="None"后,窗口仍然有边框的解决方法

    1. 设置了窗体的WindowStyle="None",窗口还是右边框,如下图: 2. 这是因为窗体默认是可以改变大小的,所以需要修改ResizeMode的值 ResizeMode ...

  7. linux下perforce(p4)的使用方法和命令

    环境变量: export P4PASSWD=abcdefg export P4CLIENT=dyoldfish.com export P4USER=dyoldfish export P4PORT=19 ...

  8. CSS3多列Multi-column布局

    Properties 属性 CSS Version 版本 Inherit From Parent 继承性 Description 简介 columns css3 无 设置或检索对象的列数和每列的宽度. ...

  9. BEA WebLogic平台下J2EE调优攻略--转载

    BEA WebLogic平台下J2EE调优攻略   2008-06-25 作者:周海根 出处:网络   前 言 随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供 ...

  10. C语言20150620

    1-->printf()输出的时候前面没有0 是十进制,前面带0是八进制,前面有0x是十六进制 printf("%d",100):十进制解析 printf("%d& ...