从 iOS 应用程序调用脚本时未维护 PHP 会话数组

Posted

技术标签:

【中文标题】从 iOS 应用程序调用脚本时未维护 PHP 会话数组【英文标题】:PHP Session array not maintained when calling script from iOS app 【发布时间】:2016-11-13 13:49:14 【问题描述】:

我的服务器上有一个 php 脚本。我开始使用 Postman for Chrome 对其进行测试。它完美无缺。但是,如果我通过 AFNetworking 调用相同的 URL,则不会维护 PHP 中的 SESSION 数组。

另一个有趣的问题是,如果我使用 MAMP 从 localhost 运行脚本,则 SESSION 数组也会在 ios 应用程序中维护。

可能是什么问题?

更新: 我正在使用 HostGator 并且我发现 session_id() 在从 iOS 应用程序而不是从 Postman 调用时会不断变化。它在 localhost 上也没有改变。

更新 2:

session_id() 仅在应用程序终止时保留更改,然后我在 viewDidLoad 上再次调用登录而不在应用程序终止之前退出。

请参阅下面的解决方案!

【问题讨论】:

【参考方案1】:

是的,这一定会发生。通常浏览器负责处理会话数据。调用边缘的 iOS 应用程序需要从 http 标头读取 cookie 数据以获取会话并手动处理它。因此,从响应中读取标头,存储会话 cookie 并在发出后续请求时添加它们。否则他们会被剥夺。

我不知道如何在您的 iOS 应用中执行此操作,因为我是一名网络开发人员。对此感到抱歉。

【讨论】:

【参考方案2】:

Soo.. 事实证明,这个问题与我的服务器配置无关。

我从应用程序向服务器发出了多个请求,有些请求比登录请求返回得更快,即使是先发出的。这导致登录请求与其他请求具有不同的 session_id()。

这仅显示在真实服务器上而不显示在本地主机上的原因是因为本地主机足够快,可以首先处理登录请求。

虽然 Postman 工作是因为来自 Postman,但我一次只能提出一个请求。

对不起,如果这让任何人头疼..

【讨论】:

以上是关于从 iOS 应用程序调用脚本时未维护 PHP 会话数组的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中重新加载时未调用 UICollectionview cellForItemAtIndexPath

从包装二进制文件调用脚本时未设置 Bash 变量

使用 gorilla 会话时未保存 golang 中的会话变量

使用 xdebug 和 netbeans 调试 php-cli 脚本?

将数据从 PHP 脚本发送到 iOS

Jenkins 运行 fastlane 脚本时未安装 Yarn