2012-11-04 12 views
5

मुझे उपयोगकर्ताओं को नक्शा दिखाने के लिए क्रॉस-साइट स्क्रिप्टिंग प्रतिबंधों को बाईपास करने की आवश्यकता है जब वे किसी बाहरी साइट से लिंक पर क्लिक करते हैं जिसे मैंने iframe (external.com/onlyforme) के अंदर लोड किया है। मैंने सीखा कि ऐसा करने का सबसे आसान तरीका एक रिवर्स प्रॉक्सी सेट करना है ताकि जब मैं स्थानीय.com/external तक पहुंचूं, और अपाचे को मेरे डोमेन से आ रहा है तो अपाचे बाहरी.com/onlyforme को पुनर्प्राप्त करेगा।अपाचे रिवर्स प्रॉक्सी: बाहरी साइट पर संबंधित यूआरएल को रीडायरेक्ट कैसे करें?

यह ज्यादातर काम करता है, लेकिन जब बाहरी.com/onlyforme/index.html बाहरी.com/onlyforme/site_media/script.js तक पहुंचने का प्रयास करता है, तो यह स्थानीय.com/site_media/script.js पर रीडायरेक्ट हो जाता है, जो कि है मैं क्या चाहता हूँ नहीं। इसके बजाय, मैं इसे बाहरी.com/onlyforme के अंदर सही यूआरएल पर रीडायरेक्ट करना चाहता हूं, ताकि बाहरी साइट अपेक्षित के रूप में काम करे।

मैं यह कैसे कर सकता हूं?

मैं अपने httpd.conf में यह है, किसी अन्य config बयानों के बाहर:

ProxyRequests Off 
ProxyPass /external/ http://www.external.com/onlyforme 
ProxyPassReverse /external/ http://www.external.com/onlyforme 

मैं Apache 2.2 चल रहा हूँ।

उत्तर

2

आपको उपरोक्त में दिए गए ProxyHTMLURLMap निर्देशों को जोड़ने के लिए, लौटाए गए HTML में किसी भी हार्ड कोड किए गए यूआरएल का निरीक्षण और पुनर्लेखन करने की आवश्यकता है।

ProxyRequests Off 
ProxyPass  /external/   http://www.external.com/onlyforme 
ProxyHTMLURLMap http://www.external.com/onlyforme  /external 

<Location /external/> 
    ProxyPassReverse http://www.external.com/onlyforme 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap/   /external/ 
    ProxyHTMLURLMap /site_media /external/site_media/ 
</Location> 

यह भी देखें: http://wiki.uniformserver.com/index.php/Reverse_Proxy_Server:_mod_proxy_html

0

arober11 के जवाब बहुत मेरे समान मुद्दे को हल में मदद की। मैं संभव नियमों का कम से कम सेट करने के लिए उसे संक्षिप्त करने की कोशिश की है, और वहाँ है मेरे अपने विन्यास एक Etherpadhttps://my-domain-name.wtf/pad पर चल रहा है करने के लिए:

<Location /pad> 
    ProxyPass http://localhost:9001 retry=0 
    # retry=0 => avoid 503's when restarting etherpad-lite 
    ProxyPassReverse http://localhost:9001 
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap http://localhost:9001 
</Location> 
RewriteRule ^/pad$ /pad/ [R] 
संबंधित मुद्दे