Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在所有正常进程之前修改Django请求的原始url_Django_Ios6_Cookieless - Fatal编程技术网

在所有正常进程之前修改Django请求的原始url

在所有正常进程之前修改Django请求的原始url,django,ios6,cookieless,Django,Ios6,Cookieless,这可能有点棘手,我不确定这是否正确。由于iOS6阻止在web容器中设置cookie,因此我的传统HTML5 Django游戏(它非常依赖cookie(会话id))将无法再次运行。我正在尝试无Cookie的方式,编写一个中间件,从url中取出sessid并将其保存到request.cookies['sess_id']。我可以工作,但代码库包含很多依赖url的逻辑,这些逻辑不可能一个接一个地更改。。。url可能看起来像 GET /sess_e4b817ee8993bdcbc34733feb1

这可能有点棘手,我不确定这是否正确。由于iOS6阻止在web容器中设置cookie,因此我的传统HTML5 Django游戏(它非常依赖cookie(会话id))将无法再次运行。我正在尝试无Cookie的方式,编写一个中间件,从url中取出sessid并将其保存到request.cookies['sess_id']。我可以工作,但代码库包含很多依赖url的逻辑,这些逻辑不可能一个接一个地更改。。。url可能看起来像

    GET /sess_e4b817ee8993bdcbc34733feb18951ff/m/stage/quest/
现在我正在考虑从url中删除sess部分,使其返回到

    GET /m/stage/quest/

所有正在进行的过程都不需要改变。我想我可以修改django请求对象的原始属性。要修改哪个属性?还有更好的主意吗?谢谢。

您只需重新包含带有前缀的URL,无需更改任何内容

url(r'^(?P<sessionid>sess_[a-f0-9]+)/', include('your_urls')),
url(r'^(?Psess[a-f0-9]+)/,包括(“您的url”),

我采用的最后一种方法是将iOS容器更改为接受cookie,而无需再更改服务器端。一些代码供参考

-(void)applicationDidBecomeActive:(UIApplication *)application {    
isInternetconnectionUp = [self checkInternetConnection];
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
}

这是一种方法。实际上,我是通过(r'^(?:sess\uw*\/)?m/,include('website.url'))来完成的,但问题是有很多代码在做“if url.startwith('/m/):…”之类的事情,这就是为什么我在寻找一种方法来将url恢复到“/m/abcd/…”嗯。这听起来像是在做你的url路由应该做的事情。改写您的方法可能更快,而不是检查URL的组件。最后,当找到SISSID ID信息时,在中间件中重写Reavest.Poad和Reopest.PaTyFo。看起来很好,还在测试中,谢谢。