首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-HttpRedirect在Internet explorer中失败

Django-HttpRedirect在Internet explorer中失败
EN

Stack Overflow用户
提问于 2011-10-29 13:46:31
回答 1查看 1K关注 0票数 5

我有一个使用Django的Facebook应用程序。在我的一个视图中,我使用下面的代码来使用户登录。

在IE中,返回HttpResponseRedirect行失败,错误消息是“此内容不能显示在框架中.”,尽管其他浏览器运行良好。

你有什么想法吗,为什么IE对HttpResponseRedirect失败了?(这是在Windows7上的IE9上产生的问题,服务器使用django-1.3)

代码语言:javascript
复制
def auto_login(request):
    username = request.GET['username']
    password = request.GET['password']
    user = authenticate(username=username, password=password)
    if user is not None:
            if user.is_active:
        login(request, user)
        theURL='http://apps.facebook.com/myapp/'
        return HttpResponseRedirect(theURL)
            else:
            return HttpResponse("disabled account")
    else:
        return HttpResponse("Invalid login")
EN

回答 1

Stack Overflow用户

发布于 2012-03-14 10:06:14

这可以是两件事,两者都与浏览器安全模型相关。

选项1是重定向到另一个域。客户可能决定遵循重定向,或拒绝。特别是HTTP 307重定向(它允许转发POST数据)并不总是被客户端接受。

选项2与使用HTTP将url重定向到另一个使用方法GET的资源有关。

如果当前视图和重定向的HTTP方法不同(即针对facebook/myapp的/login url和HTTP的HTTP ),至少IE8将拒绝重定向。我不确定这一点是否在IE9中被改变了。

有几件事你可以试试。

  • 您可以尝试另一个HTTP响应代码。假设不需要将HTTP参数从原始请求转发到重定向请求,响应代码303将比307好。如果您的情况涉及将HTTP资源重定向到facebook的外部HTTP资源,则另一次尝试是在中间进行另一次重定向: yoursite.com上的POST资源-->重定向以获取yoursite.com上的资源-->外部重定向到facebook域。
  • “额外重定向”选项可以修复一个浏览器,但破坏另一个浏览器(浏览器对重定向有限制,这可能因浏览器类型和版本而异)。如果要进入这种情况,您可能需要检测用户代理并在IE和其他浏览器之间切换。

几个很好的链接:

Django/IE8 Admin Interface Weirdness

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7939289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档