mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 11:23:25 +08:00
FIX: ignore canonical link to localhost (#13577)
This commit is contained in:
parent
6986b36985
commit
b63c9febe8
|
@ -36,7 +36,7 @@ module Onebox
|
|||
# prefer canonical link
|
||||
canonical_link = doc.at('//link[@rel="canonical"]/@href')
|
||||
canonical_uri = Addressable::URI.parse(canonical_link)
|
||||
if canonical_link && "#{canonical_uri.host}#{canonical_uri.path}" != "#{uri.host}#{uri.path}"
|
||||
if canonical_link && "#{canonical_uri.host}#{canonical_uri.path}" != "#{uri.host}#{uri.path}" && canonical_uri.host != "localhost"
|
||||
response = (fetch_response(canonical_uri.to_s, headers: headers, body_cacher: body_cacher) rescue nil)
|
||||
doc = Nokogiri::HTML(response) if response
|
||||
end
|
||||
|
|
|
@ -52,6 +52,23 @@ RSpec.describe Onebox::Helpers do
|
|||
|
||||
expect(described_class.fetch_html_doc(uri).to_s).to match("success")
|
||||
end
|
||||
|
||||
context "canonical link" do
|
||||
it "follows canonical link" do
|
||||
uri = 'https://www.example.com'
|
||||
stub_request(:get, uri).to_return(status: 200, body: "<!DOCTYPE html><link rel='canonical' href='http://foobar.com/'/><p>invalid</p>")
|
||||
stub_request(:get, 'http://foobar.com').to_return(status: 200, body: "<!DOCTYPE html><p>success</p>")
|
||||
|
||||
expect(described_class.fetch_html_doc(uri).to_s).to match("success")
|
||||
end
|
||||
|
||||
it "does not follow canonical link pointing at localhost" do
|
||||
uri = 'https://www.example.com'
|
||||
stub_request(:get, uri).to_return(status: 200, body: "<!DOCTYPE html><link rel='canonical' href='http://localhost:3000/'/><p>success</p>")
|
||||
|
||||
expect(described_class.fetch_html_doc(uri).to_s).to match("success")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "redirects" do
|
||||
|
|
Loading…
Reference in New Issue
Block a user