我創建了一個簡短的 url,比如說https://my.short.link/foo,指向https://my.other.website/bar.
如何在瀏覽器中使用 javascript 方法檢索此 url?(我正在使用角度)
uj5u.com熱心網友回復:
這將取決于my.short.link您在請求 URL 時如何處理它。
- 型別 1:一個非常基本的服務可能會使用重定向回應(HTTP 302 等)。
- 型別 2:或者它可能使用一個成功的回應來服務一個帶有
<meta http-equiv="refresh" ...>標簽的 HTML 頁面。 - 型別 3:或者它可能使用成功的回應服務于通過 JavaScript 進行重定向的 HTML 頁面。
瀏覽器
如果您的意思是要在瀏覽器中執行此操作,您可能能夠獲取上述服務型別 1 的資訊,但不能獲取其他服務的資訊。
正如Evolutionxbox 所說,您可以嘗試fetch,并且令人驚訝的是(對我來說!)如果服務使用簡單的重定向回應處理請求,您確實會在回應中看到一個新 URL,但它不會包含哈希片段:
fetch("https://tsplay.dev/wEv6gN")
.then(r => {
if (!r.ok) {
throw new Error(`HTTP error ${r.status}`);
}
for (const [key, value] of r.headers) {
console.log(`${key}: ${value}`);
}
console.log(r.url);
})
.catch(console.error);
該 URLhttps://tsplay.dev/wEv6gN將https://www.typescriptlang.org/play?#code/MYewdgzgLgBAJgQygmBeGB5ARgKwKbBQB0AZgE554BeeAFAN4CwAUDGzBCALZ4BcMARgBMAZgA0LdjAA24AOb96AIgRLeSrEoC E1u2kBLaPwDaS4EoC6uqSBL8lSm wRksBqGVcBPfmACu0tLObFAAFgZgchD8AkRCuloAlADcLCxQ3gAOePBICAD6ANZ43mgwJd52MJk51YjIacwsJP5ghAbg8CAA6iBkRbRF-A2FlUkwTHps0niwAG4I0v656KMmRZZNUgD0O0QHLFpAA通過 302(“永久移動”)重定向回應重定向到。在上面的代碼中,我們只看到https://www.typescriptlang.org/play?. 但也許這對你的目的來說已經足夠了。
但這不適用于上述型別 2 和 3。您必須能夠讀取和決議 HTML,并且同源策略將阻止在您的源上運行的代碼訪問該 HTML。您可以嘗試在其中打開它iframe(盡管我懷疑您并不是真的想訪問該頁面,您只是想獲取它的 URL),但同樣的問題適用:即使iframe轉到目標位置,您也不會由于 SOP 可以訪問它。
Node.js 或類似的
如果您的意思是在 Node.js 或其他一些非瀏覽器環境中,那么:
- 對于型別 1 服務,您可以執行 HTTP 請求并查看重定向資訊。
- 對于型別 2 服務,您可以執行 HTTP 請求、決議 HTML 并查找標記。
- 對于 Type 3,您需要使用無頭瀏覽器(Puppeteer 等)來捕捉它的去向。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467380.html
標籤:javascript 短网址
上一篇:嵌套物件需要修改
