新人的疑惑,求解答。
本帖最后由 luoyehanfei 于 2015-9-11 15:51 编辑嗯,这问题大概谷歌,百度了上百次,始终没找到我想要的结果,故所以来求助了,希望大神们不吝赐教(就是因为论坛回答率很低,所以csdn都不怎么用了)
直接上问题,上问题前先说说我的理解看对不对。
使用方式:
1、app为本地app,所有的资源 html页面、css、js文件均放在Phonegap打包文件中
好处:速度快,流量占用较少。
2、app全部放在服务器,所有的页面均放在服务器,也就是相当于做网站,和网站不同的区别就是加了一个外壳,美曰其名:xxxAPP,其次,调用phonegap的插件,可以调用手机的原生功能而已,熟悉了phonegap的api即可,开发方式和以前开发网站一样,如asp.net。
疑问:针对第二种方式,我目前没有任何疑问,主要是1的方式、那么问题来了!
1、一般是采取1的方式还是2的方式来使用phonegap的?又或者混合?
2、(重点)在采取方式1时,如何使用cookie,session等数据,因为涉及到跨域了, 用jsonp是可以解决跨域问题。看例子好说话
假设服务器的代码如下:
public class HomeController : Controller
{
public ActionResult Index()
{
Session["a"] = "已经成功登录";
return Json(new { name = "123", resut = "456" }, JsonRequestBehavior.AllowGet);
}
public ActionResult Get()
{
string ret = "";
if (Session["a"] != null)
{
ret = Session["a"].ToString();
}
else
{
ret = "无状态";
}
return Json(new { name = "123", resut = ret }, JsonRequestBehavior.AllowGet);
}
}备注:xxx.xxx.xxx我已经允许全站jsonp请求了。
通过jsonp 访问http://xxx.xxx.xxx/Home/Index时,在服务器设置一个Session["a"]
然后在发起第二次请求 http://xxx.xxx.xxx/Home/Get时,这个时候实际上a这个状态还是空的。这样的话,服务器是无法验证客户端是否登录了的,返回的Json.Resut依然是无状态(我刚刚测试过了)
那么假设我在第一次请求登录的时候:服务器返回一个加密的key,然后由客户端自由存储(如用全局变量、localstorage......)起来,然后每次请求服务器时都带上这个key,那么问题也来了
$http.post("xxx.xxx.xxx",myKey) 的时候,是不是我每次都得带上第一次登录请求时所返回的key,
然后服务器端的代码还得改成这样:
public ActionResult Get()
{然并卵:服务器端涉及到的方法可能成百上千个,虽然有办法自动的验证,但是始终感觉这样去做,是不是不那么合理呢??? 客户端的每个请求都带上key,虽然也是经过简单的封装一个js方法就能做到。。。。。
但是,我始终觉得不是那么合理似得。
有实际项目经验的大神能帮忙解决这个困惑么,感激不尽。
然后服务器端的代码还得改成这样:
public ActionResult Get()
{
if(Request["key"]!="")
{
bool ok= ValiDateKey(Request["key"]);//去验证key是否可以登录
if(ok)
{
//业务代码.........................
}
}
}
补上。不知道为何显示不了这段 我个人不是负责web的,但同事给我的web项目好像使用ajax解决跨域问题的,而且使用的是HTML5,HTML5
好像有个新的保存方式可以存5M的数据,希望对你有用吧 和楼主很像,我也是搞C# BS开发的,最近也在学phonegap,有很地方不明白,有空交流下:qq:524120915
页:
[1]