【发布时间】:2017-01-03 07:38:19
【问题描述】:
我正在使用react-native-cookies。我可以使用 getAll 方法来读取之前在服务器端设置的 cookie。在 react native 中,我可以使用 set 命令设置一个名为“myCookie”的 cookie,并且可以使用 getAll 命令读取它。但是,我无法在服务器端读取由 react-native 应用程序设置的 cookie。
index.ios.js 中的 react-native 代码
var CookieManager = require('react-native-cookies')
componentWillMount () {
CookieManager.set({
name: 'myCookie',
value: 'myValue',
domain: 'ios app',
origin: 'some origin',
path: '/',
version: '1',
expiration: '2017-05-30T12:30:00.00-05:00'
}, (err, res) => {
console.log('cookie set!');
console.log(err);
console.log(res);
console.log('my output');
});
CookieManager.getAll((cookie) => {
let isAuthenticated;
if (cookie && cookie.remember_token) {
isAuthenticated = true;
}
else {
isAuthenticated = false;
}
this.setState({
loggedIn: isAuthenticated
});
console.log('GM:cookie remember isAuthenticated', cookie.remember_token, isAuthenticated,this.state.title,'myCookie',cookie.myCookie)
});
},
最后一个控制台日志消息的输出是
GM:cookie remember isAuthenticated Object {domain: "localhost", value: "BAhbB2kHSSJFZmM3NDVkNTEwZTBkYTViZjU4NTJhOGQyZDNlMz…wY6BkVU--5888c15b42c6bdf3ca34c89f6554d2455d48c46b", name: "remember_token", path: "/"} true Sign In myCookie Object {domain: "ios app", value: "myValue", name: "myCookie", path: "/"}
显示正在设置 myCookie 对象并且应用能够恢复由 rails 服务器设置的 remember_token。
以上代码在 ios 应用启动时执行。然后,ios 应用程序打开一个 webview 组件,该组件调用 ruby on rails web 应用程序的会话控制器中的新方法。在 Rails 会话控制器中,我发现 cookie['myCookie'] 是 nil。为什么 cookie 的设置方式无法从 rails 应用程序访问它?
【问题讨论】:
-
调试代码的这种部分口头描述非常困难......您能否为我们提供“工作”与“不工作示例”的代码示例?它将帮助我们更好地了解您的内容重新做,然后我们就可以更好地知道需要什么来帮助您解决问题。
-
我已按照 Taryn East 的要求添加了代码。
-
如果删除,域,来源,路径和版本怎么办?
-
我不能只删除它们,因为我从 react-native-cookie 收到错误,例如关键域不能为零。我尝试将它们全部设置为空字符串,但这不允许从 rails 控制器查看 cookie。我也尝试将域设置为正确的值,但这也没有帮助。
标签: ruby-on-rails cookies react-native