簡體   English   中英

硬編碼的URL

[英]Hard-coded URL's

我有一個關於硬編碼網址的查詢。 使用jquery從JavaScript進行發布時,我將其設置為$.post('http://localhost:8000/timer/check/'

現在,這在我的開發服務器上可以正常工作。 當我必須將其部署在另一台服務器上時,我必須手動更改代碼中的所有url。 那么如何避免對URL進行硬編碼?

為了實現這一點,您必須在meta標記中使用以下標記

<head>
<base href="{{your base url_here}}">
</head>

之后,您必須編寫相對於該基本URL的路徑。

例如

<head>
    <base href="http://localhost:8000/timer/check/">
</head>

如果完整的URL是http://localhost:8000/timer/check/test.php 現在,您可以在ajax調用中相對於基本URL 'test.php'編寫代碼。

示例: https//jsfiddle.net/ptLzs7m5/1/

這樣嘗試

 var host = window.location.hostname;
 var url = host + "/" + timer/check/;

現在,您可以將網址傳遞給post方法

你也可以用這個

 window.location.protocol   //you'll get your protocol `http` or `https` 
 window.location.port       //this will return the port

有一些解決此常見問題的方法-

1)使用$.post('./timer/check') 這將采用當前域並附加網址(推薦)

2)創建一個全局變量,並在任何需要的地方使用它。 在開發人員工作時分配本地URL,在生產工作時分配生產URL。

3)創建一個包裝器,並始終使用該包裝器發送請求。 創建一個具有當前狀態(Dev或Prod)作為其值的全局變量,並不斷對其進行更改。 並像這樣使用它-

post(url) {
    var baseurl = '';
    if(CURRENT_ENVIRONMENT=='DEV')
        baseurl = 'http://localhost:8080';
    else if(CURRENT_ENVIRONMENT=='PROD')
        baseurl = 'http://yourwebsiteurl';'
    $.post(baseurl+'/timer/check')
         //and so on
}

您可以使用自己喜歡的任何一種。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM