http - 登录为电子邮件时 https 的 URI 方案

标签 http https uri

我正在使用登录名和密码进行 https 身份验证,根据 RFC,URI 应如下所示:

https://username:password@example.com:8042/

但是当登录是电子邮件时,@ 符号被解释为主机分隔符:

https://username@example.com:password@example.com:8042/

正确的 URI 应该是什么样的?

[编辑] 一些背景:我正在使用

检索 PivotalTracker 身份验证 token
require 'net/http'
require 'net/https'
require 'open-uri'

def validate_with_credentials
  doc = Nokogiri::XML(open(authentication_uri, :http_basic_authentication => [email, password]))
end

def authentication_uri
  URI('https://www.pivotaltracker.com/services/v4/me')
end

这可行,但我想在我的功能测试中 stub url,我使用的是 FakeWeb gem:

FakeWeb.register_uri(:get, 'https://correct_email@example.com:correct_password@www.pivotaltracker.com/services/v4/me',
    :body => File.read(File.join(Rails.root, 'spec', 'fixtures', 'pivotal_tracker', 'responses', 'authorization_success.xml')),
    :status => ['200', 'OK'])

这里的问题是uri不应该有双@,我得到异常:

URI::InvalidURIError: the scheme https does not accept registry part: correct_email@example.com:correct_password@www.pivotaltracker.com (or bad hostname?)

最佳答案

我不得不使用编码并将 @ 替换为 %40。由 ravi parekh 提供

关于http - 登录为电子邮件时 https 的 URI 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19356532/

相关文章:

java - 使用单个 servlet 请求上传多个文件

ssl - 将 Key 从 HtmlUnit 导出到 wireshark 进行调试

android - HttpUrlConnection.connect失败

REST - HTTP DELETE - 语义 - 只删除后代

http - 404 header - HTTP 1.0 还是 1.1?

java - 无法在 Java 中发送帖子表单

.htaccess - 使用 .htaccess 在两个页面上强制使用 http

Java 1.6 和 URIBuilder

http - 超长 URI 的 REST 最佳实践

c# - 设置 WPF 用户控件图标时无法识别 URI 前缀错误