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

时间:2013-10-14 08:48:44

标签: http https uri

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

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

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

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

正确的URI应该如何?

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

重新获取PivotalTracker身份验证令牌
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

这有效,但我想在我的功能测试中存根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:方案https不接受注册表部分:   correct_email@example.com:correct_password@www.pivotaltracker.com(或   坏主机名?)

1 个答案:

答案 0 :(得分:1)

我必须使用编码并将@替换为%40。由ravi parekh

提供