[英]update URL string with different port
在我的程序中,我得到了如下格式的URL,當我使用url.parse時,什么也沒發生,我需要更改端口,它建議如何執行此操作?
端口在冒號%3 55123之后,我需要將其更改為8080
http%3A%2F%2Fmo-de73.mo.bmw.corp%3A55123%2Flogin%2Fcallback&client_id=s2.app
該數字可以更改(任何有效端口),所以我不能使用替換
順便說一句,有解析器可以將格式從%3更改為冒號,將%2F更改為斜杠作為標准URL輸出?
在解析它之前,必須對其進行解碼。 您可以使用內置的decodeURIComponent
函數來執行此操作。
var url = require('url');
var encodedUrl = 'http%3A%2F%2Fmo-de73.mo.bmw.corp%3A55123%2Flogin%2Fcallback&client_id=s2.app';
var decodedUrl = decodeURIComponent(encodedUrl);
//=> 'http://mo-de73.mo.bmw.corp:55123/login/callback&client_id=s2.app'
var parts = url.parse(decodedUrl);
/* =>
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'mo-de73.mo.bmw.corp:55123',
port: '55123',
hostname: 'mo-de73.mo.bmw.corp',
hash: null,
search: null,
query: null,
pathname: '/login/callback&client_id=s2.app',
path: '/login/callback&client_id=s2.app',
href: 'http://mo-de73.mo.bmw.corp:55123/login/callback&client_id=s2.app' }
*/
parts.port = 8080;
//=> 8080
delete parts.host;
//=> true
url.format(parts);
//=> 'http://mo-de73.mo.bmw.corp:8080/login/callback&client_id=s2.app'
最后一部分有一點技巧。 更新port
, parts
對象將如下所示
{
// ...
host: 'mo-de73.mo.bmw.corp:55123',
port: '8080',
hostname: 'mo-de73.mo.bmw.corp',
// ...
}
hostname
正確,但是host
仍在其中進行了硬編碼的端口。 如果僅使用delete parts.host
刪除主機,則url.format
將使用{hostname}:{port}
自動創建正確的主機。
也許有更好的方法可以這樣做,但是至少這應該可以讓您入門。
嘗試這個
var url="http%3A%2F%2Fmo-de73.mo.bmw.corp%3A55123%2Flogin%2Fcallback&client_id=s2.app";
url=url.replace('%3A55123',":8080");
var decodedUrl = decodeURIComponent(url);
//decodedUrl=http://mo-de73.mo.bmw.corp:8080/login/callback&client_id=s2.app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.