【问题标题】:$.ajax + authentication + `@` in username$.ajax + 身份验证 + `@` 在用户名中
【发布时间】:2010-04-17 21:36:13
【问题描述】:

我正在创建一个使用 jQuery 进行身份验证的 Web 应用程序:

$.ajax({
    url: "/session/create?format=json",
    type: "GET",
    dataType: "json",
    cache: false,
    username: $("#signin-email").val(),
    password: $("#signin-password").val(),
    success: function(data) {
      if(data.success) {
        success = true;
      }
    }
  });

问题是代码username不包含@之类的东西时发出AJAX请求(可能是因为@是身份验证和主机中的分隔符) URL),这是我的应用程序所必需的。谁能帮助我如何做到这一点?我不介意稍微更改后端,但要求用户拥有@-less 电子邮件不是一种选择。

哦,我的后端是一个 Ruby-on-Rails 应用程序。

【问题讨论】:

    标签: jquery ruby-on-rails http email basic-authentication


    【解决方案1】:

    您应该将所有 @s 替换为 %40。 @ 是 URL 中身份验证和主机之间的分隔符(例如http://someone:password@example.com/

    【讨论】:

      【解决方案2】:

      无法复制描述的行为:正在为@-logins 发送请求。您确定这不是服务器问题(例如响应不是 json 格式)吗? (顺便说一句,我使用的是标准 jquery,假设 RoR 附带的没有 hack)

      【讨论】:

      • Rails 是否附带 jQuery?我不知道。我通常在创建新项目后清空“公共”文件夹...不,这不是服务器问题,因为当我通过输入 URL 登录并在 Safari 对话框中填写电子邮件和密码时,它确实有效。
      • 这个问题对我来说似乎很奇怪 - jQuery 似乎将用户名和密码参数直接传递给浏览器的 XMLHttpRequest 类,我认为任何转义都是自动完成的......
      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 2011-06-25
      • 2018-07-13
      • 2016-04-12
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多