gpt4 book ai didi

jquery - 为什么 Rails 无法从 Internet Explorer 访问 Ajax 请求中的 Session?

转载 作者:行者123 更新时间:2023-11-30 23:43:07 25 4
gpt4 key购买 nike

我的session_helper中有以下代码:

 def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end

这让我可以从任何 Controller 调用 current_user 来获取当前用户。 (我从头开始使用类似于 Railstutorial'sRailscasts 的身份验证)。

我有一个名为 lookup_result 的 ajax 请求,它检查服务器以查看特定结果是否已准备好。

 $.get("/lookup_result?id=<%=id%>");

它转到以下 Controller 方法:

def lookup result
user = current_user
# do things with user...
end

这通常工作正常,但有时 Rails 无法获取 current_user。我怀疑问题是 cookie 或 CSRF token 在某些情况下无法通过 ajax 请求传递,但为什么它通常可以工作?我该如何修复它才能始终正常工作?

更新:
我不知道如何复制该错误。只有登录用户才能访问发送该请求的页面(尽管有人可以将 ajax 请求复制到另一个未登录的浏览器中)。我用rollbar报告错误并保存请求数据。

这是 current_user 失败时用户代理的常用数据:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; ... )

这意味着 Internet Explorer 通过 Ajax 发送 session 信息时存在一些问题。有人知道如何解决这个问题吗?

在下面您可以看到它返回的所有数据类别,尽管其中包含“ session ”的任何内容都是空的。

Timestamp
message.request_data.headers.Accept
message.request_data.headers.Accept-Encoding
message.request_data.headers.Accept-Language
message.request_data.headers.Cf-Connecting-Ip //(CF stands for cloudflare)
message.request_data.headers.Cf-Ipcountry
message.request_data.headers.Cf-Ray
message.request_data.headers.Cf-Visitor
message.request_data.headers.Connection
message.request_data.headers.Host
message.request_data.headers.User-Agent
message.request_data.headers.Version
message.request_data.headers.X-Forwarded-For
message.request_data.headers.X-Forwarded-Port
message.request_data.headers.X-Forwarded-Proto
message.request_data.headers.X-Request-Start
message.request_data.method
message.request_data.params.... //(various parameters are displayed)
...
message.request_data.session.defer //(all these session items are empty)
message.request_data.session.domain
message.request_data.session.expire_after
message.request_data.session.httponly
message.request_data.session.id
message.request_data.session.path
message.request_data.session.renew
message.request_data.session.secret
message.request_data.session.secure
message.request_data.url
message.request_data.user_ip
server.host

最佳答案

The error never has any information about the account, IP address or browser.

如果用户为零,当然没有“帐户”:)

对于 IP 地址和用户代理,您应该使用 request.env 对象进行检查。无论用户是否在场,请求信息仍然存在。

关于jquery - 为什么 Rails 无法从 Internet Explorer 访问 Ajax 请求中的 Session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com