• 使用JSONP彻底解决Ajax跨域访问Cookie Session的方案


    最近做开发时要把图片文件放到另外一台服务器上(另外一个域名),因为这样分布式存放,网站打开速度会快很多。而我采用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 ); 

  • 相关阅读:
    [C++]Linux之进程间通信小结【待完善】
    [转] thrift的使用介绍
    [转] splice系列系统调用
    [转] gdb中忽略信号处理
    [转] 确定性投资的框架
    [转] 投资策略及投资体系
    [转] 为什么医疗咨询服务公司Evolent Health仅用4年就华丽上市?
    [转] When exactly does the virtual table pointer (in C++) gets set for an object?
    [转] Linux写时拷贝技术(copy-on-write)
    [转] .bss段和.data段的区别
  • 原文地址:https://www.cnblogs.com/tinya/p/4506558.html
Copyright © 2020-2023  润新知