मान लीजिए मेरे पेज का यूआरएल है: http://example.com/path/to/dir/index.html

और मैं इस पृष्ठ को इसके द्वारा प्रॉक्सी करता हूं: http://proxyserver.com/path/to/dir/index.html। इसी तरह मैं चाहता हूं कि पेज के सभी संबंधित यूआरएल को example.com के बजाय proxyserver.com द्वारा हल किया जाए। उचित <base> href मान क्या होना चाहिए?

मुझे पेज पर सापेक्ष यूआरएल चाहिए जैसे

  • newfile.html को http://proxyserver.com/path/to/dir/newfile.html का समाधान करने के लिए
  • /newfile.html http://proxyserver.com/newfile.html को हल करने के लिए
  • #hash को http://proxyserver.com/path/to/dir/file.html#hash का समाधान करने के लिए

<base href="" /> को पेज में सेट करने से काम सही ढंग से हो जाता है लेकिन क्या इसका कोई निहितार्थ है? क्या ब्राउज़र में इसकी अलग-अलग व्याख्या है? खाली href मान का वास्तव में क्या मतलब है? क्या यह कोणीय जैसे सभी ढांचे के लिए काम करेगा?

मैंने सुना है कि कोणीय ऐप्स को प्रारंभ करने के लिए <base> टैग अनिवार्य है और इसलिए <base> टैग को हटाने से काम नहीं हो सकता है।

नोट: वेबसाइट में पहले से ही कुछ <base> टैग हो सकते हैं जिन्हें मैं हमेशा ओवरराइड करना चाहूंगा।

मैंने <base href="/" /> को भी आजमाया लेकिन यह सापेक्ष URL को हल कर देगा

  • newfile.html से http://proxyserver.com/newfile.html तथा
  • #hash से http://proxyserver.com/#hash क्या गलत है।

किसी भी सहायताको बहुत सराहा जाएगा।

4
lazyvab 19 जुलाई 2018, 10:27
इस तरह आधार काम करता है, मुझे समस्या नहीं आती
 – 
Marco Salerno
19 जुलाई 2018, 10:45
मुझे ऐसा कोई दस्तावेज़ नहीं मिल रहा है जो बताता हो कि href के खाली मान का <base> टैग के लिए क्या मतलब है। क्या यह इसे सेट न करने या मौजूदा <base> टैग को हटाने जैसा ही है? लेकिन फिर एंगुलर ऐप्स जहां <base> अनिवार्य है, टूट जाएगा।
 – 
lazyvab
19 जुलाई 2018, 12:07
1
खाली का अर्थ है हर तंत्र की तरह जड़
 – 
Marco Salerno
19 जुलाई 2018, 12:10

3 जवाब

<base href="" /> सभी सापेक्ष पथों के लिए आधार को परिभाषित करता है। और यह हाइलैंडर सिद्धांत का पालन करता है ("केवल एक ही हो सकता है") :-)

बस यह जाँचने के लिए कि क्या मैं आपका उद्देश्य सही समझता हूँ। आप ने लिखा:

  • newfile.html को http://proxyserver.com/path/to/dir/newfile.html का समाधान करने के लिए
  • /newfile.html http://proxyserver.com/newfile.html को हल करने के लिए

तो आप एक बेसपथ नहीं चाहते हैं, लेकिन आप चाहते हैं कि ब्राउज़र कई पथों की जांच करे यदि आपके पास आवश्यक दस्तावेज़ है?

यह आसानी से संभव नहीं है (ब्राउज़र परिप्रेक्ष्य से)। इसका कारण यह है कि ब्राउज़र उन पथों की सामग्री को नहीं जानता है। उसे उन सर्वरों से अनुरोध करना होगा "अरे अच्छा सर्वर, क्या आपकी निर्देशिका में "newfile.html" है? नहीं? ठीक है धन्यवाद।"

जैसे @Attersson ने कहा, अगर आप इसे हासिल करना चाहते हैं, तो आपको अपने वेबसर्वर में फ़िल्टर और रूटिंग बनाना होगा। यह ग्राहक के लिए कोई काम नहीं होगा।

अब कोणीय के बारे में। एंगुलर 6 में, आप अपने index.html में <base href="/"> लिखेंगे। और फिर उस आधार पथ को Angular.json में कॉन्फ़िगर करें जिसे आप वास्तव में चाहते हैं:

...
"architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
             ...
            "baseHref": "/myLovedPath/",
...

नतीजतन, कोणीय एप्लिकेशन का निर्माण करेगा और <base href="/"> को <base href="/myLovedPath/"> में बदल देगा

नमस्कार

0
JanRecker 19 जुलाई 2018, 10:46
क्या होगा अगर एंगुलर में, मैं <base href=""> यानी खाली href मान लिखता हूं? क्या यह टूट जाएगा?
 – 
lazyvab
19 जुलाई 2018, 12:05
आपको अपने वेब सर्वर में पुनर्निर्देशन का उपयोग करना होगा। यह क्लाइंट साइडेड (कोणीय) को संभालने के लिए नहीं है। वैसे भी खाली आधार का मतलब वर्तमान मेजबान है।
 – 
Attersson
19 जुलाई 2018, 12:09

टैग किसी दस्तावेज़ में सभी संबंधित URL के लिए आधार URL/लक्ष्य निर्दिष्ट करता है। एक दस्तावेज़ में अधिकतम एक तत्व हो सकता है, और यह तत्व के अंदर होना चाहिए।

यदि आप http://proxyserver.com को पसंद करते हैं तो आधार url होगा / , लेकिन यदि domine इस तरह http://proxyserver.com/appname/ तो आधार यूआरएल /appname/ जैसा होगा और आप सामान्य रूप से इस तरह कोणीय क्ली के साथ तैनाती के दौरान आधार यूआरएल सेट करेंगे

ng build --prod --bh=/appname/

इस मामले में आपको मार्गों के लिए **HashLocationStrategy** का उपयोग करना होगा

ऐप.मॉड्यूल.ts

@NgModule({
  imports: [
    RouterModule.forRoot(routes)
  ],
  exports: [
    RouterModule  
  ],
  providers: [
    { provide: LocationStrategy, useClass: HashLocationStrategy } 
  ]
})
export class AppRoutingModule { }

{ प्रदान करें: स्थान रणनीति, उपयोग क्लास: हैशलोकेशन रणनीति }

0
malbarmavi 19 जुलाई 2018, 11:44

एक आधार URL, या आधार स्थान, अद्वितीय रूट URL है जिसके साथ संबंधित URL को किसी वेबसाइट के लिए पूर्ण URL में परिवर्तित किया जा सकता है। एकाधिक आधार असंभव हैं।

पुनर्निर्देशन नियमों के साथ अधिक जटिल, असंगत नीतियों को लागू किया जा सकता है। यह कर्तव्य वेब सर्वर के अंतर्गत आता है। कुछ को सूचीबद्ध करने के लिए, NginX, Apache और IIS सभी में पुनर्निर्देशन नियम निर्धारित करने की क्षमता है। वहां आप नियमित अभिव्यक्तियों के साथ जो चाहें कर सकते हैं।

चूंकि इस प्रश्न को एंगुलर टैग किया गया है, इसलिए, चूंकि क्लाइंट-वार एक पेज को वेब सर्वर द्वारा http अनुरोध को हल करने के बाद ही एक्सेस किया जाता है, इसलिए आपको हर गलत मामले के लिए सही पेज पर रीडायरेक्ट करने वाला एक खाली पेज बनाना होगा। जो निश्चित रूप से वेब सर्वर को पुनर्निर्देशन को संभालने देने से भी बदतर है।

0
Attersson 19 जुलाई 2018, 12:14