ফেসবুক কলব্যাক ইউআরএল ফিরে আসতে '# _ = _' যুক্ত করে


479

ফেইসবুক কলব্যাক #_=_রিটার্ন ইউআরএলে হ্যাশকে আন্ডারস্কোর যুক্ত করা শুরু করেছে

কোন এক কেন জানেন না? সমাধান কি?


35
কোনও ধারণা কীভাবে ফেসবুক এই চরিত্রগুলিকে যুক্ত করে? ফেসবুক আমার হ্যান্ডলারের দিকে পুনঃনির্দেশ করে যেখানে আমি তারপরে রিটার্নের ইউআরএলটিতে পুনঃনির্দেশটি পরিচালনা করি, তবুও অক্ষরগুলি এখনও ইউআরএলে যুক্ত হয়।
বেন ফস্টার

4
@ বেনফোস্টার আমি মনে করি আপনি যদি ফিডলার বা এটির মতো ব্যবহার করেন তবে আপনি যদি এফবি আপনার হ্যান্ডলারের সাথে পুনর্নির্মাণ করেন #_=_তবে এটি ঠিক আছে, তবে Response.Redirectআপনি যেখানে যেখানে করতে চান সেখানে করার পরেও ব্রাউজারটি হ্যাশ বজায় রাখে , এ কারণেই এটি কেবলমাত্র ক্লায়েন্ট-সাইড ওয়ার্কআরউন্ডস যা নীচে প্রস্তাবিত তা কাজ করবে।
আকাশম

17
2017, কী
জাক

6
মে 2017, এখনও ....
মিরকো

5
মার্চ 2018.. হ্যাঁ এখনও হচ্ছে
জন

উত্তর:


239

ফেসবুকের প্ল্যাটফর্ম আপডেটের মাধ্যমে :

অধিবেশন পুনর্নির্দেশ আচরণে পরিবর্তন

এই সপ্তাহে, আমরা এই ক্ষেত্রটি ফাঁকা রেখে যখন পুনঃনির্দেশ_আউরিতে # ____ = ____ একটি খণ্ড যুক্ত করা শুরু করেছি। আপনার অ্যাপ্লিকেশনটি এই আচরণটি পরিচালনা করতে পারে দয়া করে তা নিশ্চিত করুন।

এটি রোধ করতে, আপনার লগইন ইউআরএল অনুরোধে redirect_uri সেট করুন: (ফেসবুক পিএইচপি-এসডিকে ব্যবহার করে)

$facebook->getLoginUrl(array('redirect_uri' => $_SERVER['SCRIPT_URI'],'scope' => 'user_about_me'));

হালনাগাদ

উপরের ঠিক যেমন ডকুমেন্টেশন এটি ঠিক করতে বলেছেন। তবে ফেসবুকের নথিভুক্ত সমাধান কাজ করে না work দয়া করে ফেসবুক প্ল্যাটফর্ম আপডেট ব্লগ পোস্টে একটি মন্তব্য রেখে বিবেচনা করুন এবং আরও ভাল উত্তর পেতে এই বাগটি অনুসরণ করুন । ততক্ষণ, এই সমস্যাটি সমাধান করতে আপনার মাথার ট্যাগটিতে নিম্নলিখিতগুলি যুক্ত করুন:

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        window.location.hash = '';
    }
</script>

বা আরও বিস্তারিত বিকল্প (ধন্যবাদ নিফলেটলেটস ):

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        if (window.history && history.pushState) {
            window.history.pushState("", document.title, window.location.pathname);
        } else {
            // Prevent scrolling by storing the page's current scroll offset
            var scroll = {
                top: document.body.scrollTop,
                left: document.body.scrollLeft
            };
            window.location.hash = '';
            // Restore the scroll offset, should be flicker free
            document.body.scrollTop = scroll.top;
            document.body.scrollLeft = scroll.left;
        }
    }
</script>

10
কোন ক্ষেত্রটি ফাঁকা রেখে গেছে? এটি খুব রহস্যজনক
ব্যবহারকারী 210504

11
@ রায়ান আপডেট আমার জন্য প্রায় কাজ করে, আমি এখনও শেষে একটি হ্যাশ (/ #) পাই। এফবি নিয়ে খুশি নয়।
লেনপপলিলি

2
আমি এখনও / # পেতে পারি। এখানে কেউ আপডেট করবেন? # টি সরানোর জন্য
টিয়ান লুন

6
এই সমাধানটি হ্যাশটি মুছে ফেলবে: <স্ক্রিপ্ট টাইপ = "পাঠ্য / জাভাস্ক্রিপ্ট"> var idx = window.location.toString ()। IndexOf ("# _ = _"); if (idx> 0) {window.location = window.location.toString ()। সাবস্ট্রিং (0, আইডিএক্স); । </script> কেবল নিশ্চিত হয়ে নিন যে এটি প্রধান উপাদানটির প্রথম ট্যাগ।
গর্জি রানকোভস্কি

1
আমি এখানে আপনার বাগের প্রতিবেদনটি লক্ষ্য করেছি: বিকাশকারীরা.ফেসবুক. com/bugs/1424488987806270 একই ফলাফলের সাথে "ফ্রেগমেন্ট রিকোয়েস্ট_উরি" অনুসন্ধান করতেও আমি আমার হাত চেষ্টা করেছি।
রায়ান

115

টি এল; ডিআর

if (window.location.hash === "#_=_"){
    history.replaceState 
        ? history.replaceState(null, null, window.location.href.split("#")[0])
        : window.location.hash = "";
}

ধাপে ধাপে নির্দেশাবলী সহ সম্পূর্ণ সংস্করণ

// Test for the ugliness.
if (window.location.hash === "#_=_"){

    // Check if the browser supports history.replaceState.
    if (history.replaceState) {

        // Keep the exact URL up to the hash.
        var cleanHref = window.location.href.split("#")[0];

        // Replace the URL in the address bar without messing with the back button.
        history.replaceState(null, null, cleanHref);

    } else {

        // Well, you're on an old browser, we can get rid of the _=_ but not the #.
        window.location.hash = "";

    }

}

ধাপে ধাপে:

  1. আমরা কেবলমাত্র কোড ব্লক মধ্যে পাবেন যদি fragmentহয় #_=_
  2. ব্রাউজারটি HTML5 window.replaceStateপদ্ধতি সমর্থন করে কিনা তা পরীক্ষা করে দেখুন ।
    1. বিভক্ত হয়ে #এবং কেবল প্রথম অংশটি নিয়েই URL টি পরিষ্কার করুন ।
    2. historyক্লিন ইউআরএলে বর্তমান পৃষ্ঠার স্থিতি প্রতিস্থাপন করতে বলুন । এটি একটি নতুন তৈরির পরিবর্তে বর্তমান ইতিহাস এন্ট্রি পরিবর্তন করে। এর অর্থ কী পিছনের এবং ফরোয়ার্ড বোতামগুলি আপনার পছন্দ মতো কাজ করবে। ;-)
  3. যদি ব্রাউজারটি দুর্দান্ত এইচটিএমএল 5 ইতিহাসের পদ্ধতিগুলিকে সমর্থন না করে তবে হ্যাশটিকে খালি স্ট্রিংয়ে সেট করে আপনি যতটা পারেন ঠিক ততক্ষণ URL টি পরিষ্কার করুন। এটি একটি দুর্বল ফলব্যাক কারণ এটি এখনও একটি পিছনের হ্যাশ ফেলেছে (উদাহরণ.com/#) এবং এটি ইতিহাসের এন্ট্রি যুক্ত করে, তাই পিছনের বোতামটি আপনাকে আবার ফিরিয়ে নিয়ে যাবে #_-_

সম্পর্কে আরও জানুন history.replaceState

সম্পর্কে আরও জানুন window.location


2
আমার জন্যও নিখুঁতভাবে কাজ করেছেন। অন্যান্য সমাধান যে কোনও প্রশ্নের প্যারামিটার থেকে মুক্তি পাবে।
আদিলমুফতি

এটি গুগল ওমনিউথের জন্য একই কাজ করে, সুতরাং কোনও ত্রুটির সাথে কোনও রুট মেলে না, এটি uri অনুরোধের পরে # (হ্যাশট্যাগ) যুক্ত করেছে https: //.....herokua‌pp.com/auth/google_oa.. uth2 / কলব্যাক? রাজ্য = 1: 9feaacfe23423jh5jhhGSW DFwb419049ebb18dabdf8.. & কোড = 4 / glrY3-mSlTzwe.. rwERTEG334eXcn3hOSxGu.. c51 বিএলজিএলপিএ 4 এউ #
শালাফিস্টরের

@ রায়ান এর সমাধানের চেয়ে আমার পক্ষে আরও ভাল কাজ করেছে, কারণ এটি কোয়েরি মুছে না।
ওলিভমির

এই সমাধানটি রায়ানের সমাধানের চেয়ে ভাল কাজ করেছে। ফেসবুকের প্রমাণীকরণ এবং রায়ান এর সমাধানের পরে আমি ইউআরএলটিতে কিছু পরামিতিগুলি পাস করি, কিছু কারণে কেবল ইউআরএল থেকে প্রতিটি প্যারামিটার সরিয়ে দেয়। এই সমাধানটি আমার ক্ষেত্রে পুরোপুরি কাজ করে।
ব্লুসুন 3 কে 1

59

আপনি যদি url থেকে "#" অপসারণ করতে চান

$(window).on('load', function(e){
  if (window.location.hash == '#_=_') {
    window.location.hash = ''; // for older browsers, leaves a # behind
    history.pushState('', document.title, window.location.pathname); // nice and clean
    e.preventDefault(); // no page reload
  }
})

6
window (উইন্ডো) .অন ('লোড', ফাংশন (ঙ) {/ * লাইকবিটস কোড * /} কাজ করে
ইসতিটোয়া কেন্টারো

1
আমি এই কোডটি পরিবর্তন করে ব্যবহার করি e.preventDefault (); to event.preventDefault ();
printf

এই কোডটি jQuery ধরে নিচ্ছে এবং যুক্তিটি গ্রহণ করে একটি অন উইন্ডো রেডি ইভেন্ট শ্রোতা e
জেসন স্পার্সকে

49

এটি সুরক্ষার কারণে ডিজাইন করে ফেসবুক বাস্তবায়ন করেছিল। এখানে ফেসবুক দলের সদস্য এরিক ওসগুডের ব্যাখ্যাটি রয়েছে:

এটি 'নকশার দ্বারা' হিসাবে চিহ্নিত করা হয়েছে কারণ এটি একটি সম্ভাব্য সুরক্ষা দুর্বলতা প্রতিরোধ করে।

কিছু ব্রাউজার হ্যাশ টুকরাটি ইউআরএল থেকে একটি নতুন ইউআরএল পর্যন্ত শেষ করে দেয় যেখানে তাদের পুনঃনির্দেশ করা হয়েছে (যদি সেই নতুন ইউআরএলটিতে নিজেই একটি হ্যাশ খণ্ড না থাকে)।

উদাহরণস্বরূপ, উদাহরণস্বরূপ ডটকম উদাহরণ 2.com এ পুনঃনির্দেশ ফিরিয়ে দেয়, তবে উদাহরণস্বরূপ ডটকমের কাছে একটি ব্রাউজার উদাহরণ # ডাব্লুতে চলে যাবে # অ্যাবসি, এবং উদাহরণ 1.com থেকে হ্যাশ খণ্ডের সামগ্রীটি উদাহরণ 2 এর স্ক্রিপ্টে অ্যাক্সেসযোগ্য হবে .com।

যেহেতু একটি লেখকের প্রবাহকে অন্যটিতে পুনঃনির্দেশ করা সম্ভব, তাই এক অ্যাপ্লিকেশন থেকে অন্য অ্যাপ্লিকেশনটিতে অ্যাক্সেসযোগ্য সংবেদনশীল লেখক ডেটা পাওয়া সম্ভব।

ব্রাউজারের এই আচরণটি রোধ করতে পুনঃনির্দেশ করা URL এ একটি নতুন হ্যাশ টুকরা যুক্ত করে এটিকে প্রশমিত করা হয়।

ফলস্বরূপ ইউআরএলটির নান্দনিকতা বা ক্লায়েন্ট-পার্শ্ব আচরণ যদি উদ্বেগের বিষয় থাকে তবে আপত্তিকর চরিত্রগুলি অপসারণের জন্য উইন্ডো.লোকেশন.হ্যাশ (বা এমনকি নিজের নিজস্ব একটি সার্ভার-সাইড পুনর্নির্দেশ) ব্যবহার করা সম্ভব হবে।

সূত্র: https://developers.facebook.com/bugs/318390728250352/


9
এটিই হ'ল একমাত্র উত্তর যা হ'ল এটি কেন ঘটে তা ব্যাখ্যা করে, ধন্যবাদ, আমি মনে করি আমি এখন আমার ইউআরএলে আপত্তিজনক চরিত্রগুলি ছেড়ে যাব যে আমি জানি তারা কোনও সমস্যা নয়।
স্টেফেনমুরডোচ

1
এটি তাদের পুনঃনির্দেশগুলিতে টাম্বলারও প্রয়োগ করেছেন। ('19-এর মাঝামাঝি) এফবি ব্যাখ্যার দিকে নির্দেশ করার জন্য ধন্যবাদ। কেবলমাত্র "/" এর পরিবর্তে "/ #" -তে সফল পুনঃনির্দেশের ইঙ্গিত দিয়ে একটি সরল পাসপোর্ট অ্যাপে সহজেই সমাধান করা হয়েছে (যা ওয়েবে আরও অষ্টিকর্মগুলি কেন দেখছি তা আমি মনে করি ...)
আরএল ব্রাউন

10

তারা কেন এটি করছে তা নিশ্চিত নয় তবে, আপনি আপনার পৃষ্ঠার শীর্ষে হ্যাশটি পুনরায় সেট করে এটি পেতে পারেন:

if (window.location.hash == "#_=_")
  window.location.hash = "";

9

আপনি redirect_uriফেসবুক কলব্যাকের জন্য প্যারামিটারে নিজের নিজস্ব হ্যাশও নির্দিষ্ট করতে পারেন যা নির্দিষ্ট পরিস্থিতিতে যেমন সহায়ক হতে পারে যেমন /api/account/callback#home। যখন আপনাকে পুনঃনির্দেশিত করা হয়, এটি কমপক্ষে একটি হ্যাশ হবে যা আপনি যদি ব্যাকবোন.জেএস বা অনুরূপ ব্যবহার করেন (জ্যাকুইরি মোবাইল সম্পর্কে নিশ্চিত নন) তবে কোনও পরিচিত রুটের সাথে সম্পর্কিত।


8

ফেসবুক একটি ফ্রেম ব্যবহার করে এবং এর ভিতরে এজেএক্স যোগাযোগ ব্যবহার করে সমস্ত কিছু কাজ করে। এক্ষেত্রে সবচেয়ে বড় সমস্যা হ'ল বর্তমান পৃষ্ঠা অবস্থা সংরক্ষণ করা। আমি যতদূর বুঝতে পেরেছি, ফেসবুক সিমুলেটেড অ্যাঙ্কর ব্যবহার করার সিদ্ধান্ত নিয়েছে। এর অর্থ যদি আপনি কোথাও ক্লিক করেন তবে তারা আপনার পৃষ্ঠার অভ্যন্তরে অ্যাঙ্কর হিসাবে অনুকরণ করে এবং যখন এজেএক্স যোগাযোগ শুরু হয়, তখন তারা আপনার URL এর অ্যাঙ্কর বিটটিও পরিবর্তন করে।

আপনি পৃষ্ঠাটি পুনরায় লোড করার চেষ্টা করার সময় এই সমাধানটি সাধারণত আপনাকে সহায়তা করে (ENTER নয়, টিপুন F5), কারণ আপনার ব্রাউজারটি অ্যাঙ্কারগুলি সহ পুরো ইউআরএল ফেসবুক সার্ভারে প্রেরণ করে। অতএব ফেসবুক সর্বশেষতম রাজ্যটি (যা দেখছ) তুলে নিয়েছে এবং আপনি সেখান থেকে চালিয়ে যেতে সক্ষম হবেন।

কলব্যাকটি যখন #_=_এটির সাথে ফিরে আসে তার অর্থ হল পৃষ্ঠাটি এটি ছেড়ে যাওয়ার আগে তার প্রাথমিক অবস্থায় ছিল। যেহেতু এই অ্যাঙ্করটি ব্রাউজার দ্বারা পার্স করা হয়েছে, আপনার এটি নিয়ে চিন্তা করার দরকার নেই।


2
আপনার যদি জাভাস্ক্রিপ্ট কাঠামো ব্যাকবোন বা অ্যাম্বারের মতো থাকে তবে রাশটার দ্বারা হ্যাশটি ব্যাখ্যা করার পরে এটি হ'ল সবকিছুই একটি সমস্যা
রুদি

1
ইউআরএল ফ্রেগমেন্ট শনাক্তকারী ("অ্যাঙ্কারস") একটি অনুরোধে ব্রাউজারে প্রেরণ করা হয় না । এছাড়াও, এই প্রশ্নটি মূল ডেস্কটপ সাইট সম্পর্কে নয়, ওআউথ সম্পর্কে। এর কারণ হ'ল ওআউথ সুরক্ষা - দূষিত পুনর্নির্দেশের ইউআরআই কারুকর্মের কারণে আক্রমণগুলি প্রতিরোধ করা।
অ্যান্ড্রুএফ

8

বড় বিরক্তিকর, বিশেষত এমন অ্যাপ্লিকেশনগুলির জন্য যা ইউআরআইকে বিশ্লেষণ করে এবং কেবল read _GET না পড়ে ... হ্যাকটি এখানে আমি একসাথে ফেলেছি ... উপভোগ করুন!

<html xmlns:fb='http://www.facebook.com/2008/fbml'>
<head>
        <script type="text/javascript">
        // Get rid of the Facebook residue hash in the URI
        // Must be done in JS cuz hash only exists client-side
        // IE and Chrome version of the hack
        if (String(window.location.hash).substring(0,1) == "#") {
                window.location.hash = "";
                window.location.href=window.location.href.slice(0, -1);
                }
        // Firefox version of the hack
        if (String(location.hash).substring(0,1) == "#") {
                location.hash = "";
                location.href=location.href.substring(0,location.href.length-3);
                }
        </script>
</head>
<body>
URI should be clean
</body>
</html>

আপনার তৈরি না করা কোনও ডেটা পার্স করার সময় অনুমান করা সম্পর্কে সতর্ক থাকুন। ইউআরআই খণ্ডের শনাক্তকারীদের আরএফসি 1738 (1994 সালে) এর আগে হিসাবে নির্দিষ্ট করা হয়েছিল তাই আপনি যদি সঠিক ইউআরআই পার্সার ব্যবহার করেন তবে এটি কখনও সমস্যা হবে না।
অ্যান্ড্রুএফ

6

আপনি যদি হ্যাশবাং (/ #! /) ইউআরএল, উদাহরণস্বরূপ কৌনিক সঙ্গে একটি জেএস কাঠামো ব্যবহার করেন তবে এটি মারাত্মক সমস্যা হয়ে উঠতে পারে। প্রকৃতপক্ষে, কৌণিক একটি নন-হ্যাশবাং খণ্ডের ইউআরএলগুলি অবৈধ হিসাবে বিবেচনা করবে এবং একটি ত্রুটি ছুঁড়ে দেবে:

Error: Invalid url "http://example.com/#_=_", missing hash prefix "#!".

আপনি যদি এমন ক্ষেত্রে থাকেন (এবং আপনার ডোমেন রুটে পুনর্নির্দেশ করছেন), পরিবর্তে:

window.location.hash = ''; // goes to /#, which is no better

সহজভাবে করুন:

window.location.hash = '!'; // goes to /#!, which allows Angular to take care of the rest

1.2+, এটি দুর্দান্ত কাজ করে। 1.0 এবং নীচে ব্যবহার করুন উইন্ডো.লোকেশন.হ্যাশ = '';
প্রদীপ মহাদেবু

1
হ্যাঁ, আমি এটি কেবলমাত্র 1.2 এ পরীক্ষা করেছি, নির্দিষ্টকরণের জন্য ধন্যবাদ!
নিমজ্জি

এবং তারপরে
এইচটিএমএল

5

এই সমস্যাটি ফেসবুক এজেএক্সের সাথে কীভাবে সম্পর্কিত তা আমি দেখছি না। প্রকৃতপক্ষে সমস্যাটি জাভাস্ক্রিপ্ট অক্ষম হওয়ার সাথে সাথে খাঁটি ভিত্তিক লগইনগুলি পুনঃনির্দেশ করার ক্ষেত্রেও ঘটে।

ফেসবুকের সাথে একটি উদাহরণ বিনিময়:

1. GET <https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&scope=email&redirect_uri=MY_REDIRECT_URL> RESPONSE 302 Found Location: <https://www.facebook.com/connect/uiserver.php?[...]>  
2. GET <https://www.facebook.com/connect/uiserver.php?[...]> RESPONSE 302 Found MY_REDIRECT_URL?code=FB_CODE#_  
3. GET MY_REDIRECT_URL?code=FB_CODE#_  

আমার জন্য কেবল ফায়ারফক্সের সাথেই ঘটে।


4

আমার পুনর্নির্দেশ পৃষ্ঠায় এটি যুক্ত করা আমার জন্য সমস্যাটি স্থির করে ...

if (window.location.href.indexOf('#_=_') > 0) {
    window.location = window.location.href.replace(/#.*/, '');
}

1
এটি একটি পৃষ্ঠার রিফ্রেশের সূচনা করে একটি উইন্ডো অবস্থানের পরিবর্তনের কারণ ঘটায়
rpearce

3

কৌণিক এবং কৌণিক ইউআই রাউটার সহ, আপনি এটি ঠিক করতে পারেন

    app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {

      // Make a trailing slash optional for all routes
      // - Note: You'll need to specify all urls with a trailing slash if you use this method.
      $urlRouterProvider.rule(function ($injector, $location) {
        /***
        Angular misbehaves when the URL contains a "#_=_" hash.

        From Facebook:
          Change in Session Redirect Behavior
          This week, we started adding a fragment #_=_ to the redirect_uri when this field is left blank.
          Please ensure that your app can handle this behavior.

        Fix:
          http://stackoverflow.com/questions/7131909/facebook-callback-appends-to-return-url#answer-7297873
        ***/
        if ($location.hash() === '_=_'){
          $location.hash(null);
        }

        var path = $location.url();

        // check to see if the path already has a slash where it should be
        if (path[path.length - 1] === '/' || path.indexOf('/?') > -1) {
          return;
        }
        else if (path.indexOf('?') > -1) {
          $location.replace().path(path.replace('?', '/?'));
        }
        else {
          $location.replace().path(path + '/');
        }
      });

      // etc ...
    });
});

এখানে কাজ করে না - বিধি প্রয়োগের আগে রুট পরিবর্তন হয় () প্রয়োগ করা হয়
মল নিসন

3

আপনি যদি ভ্যু-রাউটার ব্যবহার করছেন তবে আপনি রুটের তালিকায় যুক্ত করতে পারেন:

{
  path: '/_=_',
  redirect: '/', // <-- or other default route
},

2

ফেসবুক কীভাবে সেশন পুনঃনির্দেশগুলি পরিচালনা করে তা সম্প্রতি একটি পরিবর্তন প্রবর্তিত হয়েছিল। ঘোষণার জন্য এই সপ্তাহের অপারেশন বিকাশকারী প্রেমের ব্লগ পোস্টে "সেশন পুনর্নির্দেশ আচরণে পরিবর্তন" দেখুন ।


1
আমি নিশ্চিত নই, তিনি এখানে কী উল্লেখ করছেন
user210504

2

আমার জন্য, আমি জাভাস্ক্রিপ্ট পুনর্নির্দেশটিকে অন্য পৃষ্ঠায় মুক্ত করতে চাই #_=_। নীচের ধারণাগুলি কাজ করা উচিত। :)

function redirect($url){
    echo "<script>window.location.href='{$url}?{$_SERVER["QUERY_STRING"]}'</script>";        
}

আমি মনে করি এটি ভাল ধারণা নয় কারণ আপনি একাধিক অকেজো অনুরোধ তৈরি করছেন
জ্যাসেক পিটাল

1

আমার পক্ষে কাজ করা (ব্যাকবোন.জেএস ব্যবহার করে), ফেসবুকে পুনর্নির্দেশিত ইউআরএলটির শেষে "# /" যুক্ত করা ছিল work ফেসবুক সরবরাহকৃত টুকরোটি রক্ষা করবে এবং নিজস্ব "_ = _" যুক্ত করবে না।

ফিরে আসার পরে, ব্যাকবোন "# /" অংশটি সরিয়ে ফেলবে। AngularJS এর ​​জন্য, "#!" সংযোজন রিটার্ন URL এ কাজ করা উচিত।

মনে রাখবেন যে মূল ইউআরএলটির খণ্ডন শনাক্তকারী বেশিরভাগ ব্রাউজার দ্বারা পুনঃনির্দেশে (HTTP স্থিতি কোড 300, 301, 302 এবং 303 এর মাধ্যমে) সংরক্ষণ করা হয়, যদি না পুনর্নির্দেশ URL টিতে একটি খণ্ড সনাক্তকারী থাকে। এটি প্রস্তাবিত আচরণ বলে মনে হয়

আপনি যদি কোনও হ্যান্ডলার স্ক্রিপ্ট ব্যবহার করেন যা ব্যবহারকারীকে অন্য কোথাও পুনঃনির্দেশ করে, আপনি খালি স্ট্রিংয়ের সাথে খণ্ড শনাক্তকারীকে প্রতিস্থাপন করতে এখানে "" পুনর্নির্দেশ URL টিতে যুক্ত করতে পারেন।


1

আমি জানি এই উত্তরটি দেরি হয়ে গেছে, তবে আপনি যদি পাসপোর্টজ ব্যবহার করছেন তবে আপনি এটি দেখতে চাইবেন।

return (req, res, next) => {
    console.log(req.originalUrl);
    next();
};

আমি এই মিডওয়্যারটি লিখেছি এবং এটি সার্ভারের উদাহরণটি প্রকাশ করতে প্রয়োগ করেছি এবং আমি যে মূল URL পেয়েছি তা ছাড়া "#_=_"। দেখে মনে হচ্ছে যখন আমরা সার্ভারের উদাহরণগুলিতে মিডওয়্যার হিসাবে পাসপোরজেএস'র উদাহরণটি প্রয়োগ করি, তখন এটি অক্ষরগুলি গ্রহণ করে না, তবে কেবল আমাদের ব্রাউজারগুলির অ্যাড্রেস বারে দৃশ্যমান।


3
"# _ = _" এটি কেবল ক্লায়েন্টের জন্য উপলব্ধ। পর্যালোচনা: en.wikipedia.org/wiki/Fragment_identifier
alditis

1

আমি এটি ব্যবহার করি, '#' চিহ্নটিও মুছে ফেলতে।

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        window.location.href = window.location.href.split('#_=_')[0];
    }
</script>

0

কৌণিক 2 (আরসি 5) এবং হ্যাশ-ভিত্তিক রুটগুলি ব্যবহার করে, আমি এটি করি:

const appRoutes: Routes = [
  ...
  {path: '_', redirectTo: '/facebookLoginSuccess'},
  ...
]

এবং

export const routing = RouterModule.forRoot(appRoutes, { useHash: true });

আমি যতদূর বুঝতে পেরেছি, =রুটের চরিত্রটি alচ্ছিক রুট পরামিতি সংজ্ঞার অংশ হিসাবে ব্যাখ্যা করা হয়েছে (দেখুন https://angular.io/docs/ts/latest/guide/router.html#!#optional-route-paraters ) , তাই রুট মিলের সাথে জড়িত নয়।


0

পিএইচপি এসডিকে ব্যবহারকারীদের জন্য

আমি ফরওয়ার্ড করার আগে অতিরিক্ত অংশটি সরিয়ে সমস্যার সমাধান করেছি।

 $loginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);
 $loginURL = str_replace("#_=_", "", $loginURL);
 header("Location: " . $loginURL);

0

এটি আপনার ইউআরএলে সংযুক্ত অক্ষরগুলি সরিয়ে ফেলবে

<script type="text/javascript">
 var idx=window.location.toString().indexOf("#_=_"); 
   if (idx > 0) { 
     window.location = window.location.toString().substring(0, idx); 
   } 
</script>

0

"# _ = _" (পিএইচপি) অপসারণের সবচেয়ে সহজ এবং পরিষ্কার সমাধান:

"শিরোনামের পরিবর্তে (" অবস্থান: xxx.php ");" "প্রতিধ্বনি (" অবস্থান.href = 'xxx.php'; ") ব্যবহার করতে;"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.