我有3种情况,如下所示:
按照以下代码比较我的URL域:
def compare_domains(urls):
''' Return True if the domains of the provided urls are the same.
'''
first_domain = None
for url in urls:
# all urls are interpreted as absolute urls,
# except for urls that start with a /
try:
if not urlparse.urlparse(url).scheme and not url.startswith('/'):
url = '//' + url
parsed = urlparse.urlparse(url.lower(), 'http')
domain = (parsed.scheme, parsed.hostname, parsed.port)
except ValueError:
# URL is so messed up that even urlparse can't stand it
return False
if not first_domain:
first_domain = domain
continue
if first_domain != domain:
return False
return True
def on_same_domain(data_dict):
# compare CKAN domain and resource URL
URL1 = site_url1
URL2 = site_url2
return compare_domains([URL1, URL2])
情况1:非代理查询
URL 1: http://172.30.66.61:1026/query
URL 2: http://172.30.66.61:1026
相同domain = true情况,因此出错。不可能
案例2:代理查询(使用abc)
URL 1: http://172.30.66.61/abc/query
URL 2: http://172.30.66.61
根据上述代码情况,同一个domain = true,但是启用了代理。(启用代理时是abc)
因此,代码不应返回错误。
实际上,问题是当使用代理URL时,URL的路径存在+它是同一个域,它不应该返回错误,但是
当不使用代理abc时,它是same_domain并且应该发生错误。
我无法将上述条件的条件写为proxify url,即 abc 可能是任何东西,但 / query 始终存在。
此外,我认为如何比较URL中的两个路径?