http - means - url মানে কি




বিভিন্ন ব্রাউজারে একটি ইউআরএল সর্বোচ্চ দৈর্ঘ্য কি? (11)

বিভিন্ন ব্রাউজারে একটি ইউআরএল সর্বোচ্চ দৈর্ঘ্য কি? এটা ব্রাউজার মধ্যে পার্থক্য না?

HTTP প্রোটোকল এটা dictate না?


সংক্ষিপ্ত উত্তর - 2000 অক্ষরের প্রকৃত সীমা

আপনি 2000 অক্ষর অধীনে URL রাখলে, তারা কার্যত ক্লায়েন্ট এবং সার্ভার সফ্টওয়্যার কোনো সমন্বয় কাজ করবে।

আপনি নির্দিষ্ট ব্রাউজার লক্ষ্য করা হয়, আরো বিস্তারিত নির্দিষ্ট সীমা জন্য নিচে দেখুন।

দীর্ঘ উত্তর - প্রথম, মান ...

RFC 2616 (হাইপারটেক্সট ট্রান্সফার প্রোটোকল HTTP / 1.1) অনুচ্ছেদ 3.2.1 বলছে

HTTP প্রোটোকলটি কোনও URI এর দৈর্ঘ্যে কোনও অগ্রিম সীমা রাখে না। সার্ভারগুলি যে কোনও সংস্থার ইউআরআইকে পরিচালনা করতে সক্ষম হবেন এবং যদি তারা GET-ভিত্তিক ফর্মগুলি সরবরাহ করে যা ইউআরআইগুলি তৈরি করতে পারে তবে তারা সীমাহীন দৈর্ঘ্যের URIs পরিচালনা করতে সক্ষম হবেন। একটি সার্ভার 414 (অনুরোধ-ইউআরআই লম্বা) স্থিতি ফিরে দিতে পারে যদি সার্ভারের চেয়ে একটি URI বেশি লম্বা থাকে (বিভাগ 10.4.15 দেখুন)।

যে RFC RFC7230 দ্বারা অপ্রচলিত হয়েছে যা HTTP / 1.1 স্পেসিফিকেশনের রিফ্রেশ। এটি অনুরূপ ভাষা রয়েছে, তবে এটি প্রস্তাব করার জন্যও চলছে:

অনুরোধ লাইন দৈর্ঘ্য বিভিন্ন বিজ্ঞাপন এই সীমাবদ্ধতা অনুশীলন পাওয়া যায়। এটি সুপারিশ করা হয়েছে যে সমস্ত HTTP প্রেরক এবং প্রাপক, সর্বনিম্ন, অনুরোধ-লাইন দৈর্ঘ্য 8000 octets সমর্থন করে।

... এবং বাস্তবতা

যে মান বলে কি। বাস্তবতার জন্য , এই অনুসন্ধানটি boutell.com এ দেখুন যা দেখতে ব্যক্তিগত ব্রাউজার এবং সার্ভার বাস্তবায়ন সমর্থন করবে। এটি একটি পঠিত মূল্য, কিন্তু নির্বাহী সারাংশ:

অত্যন্ত দীর্ঘ URL গুলি সাধারণত একটি ভুল। 2,000 অক্ষরের বেশি URL টি সর্বাধিক জনপ্রিয় ওয়েব ব্রাউজারে কাজ করবে না। আপনি যদি ইন্টারনেট ব্যবহারকারীদের অধিকাংশের জন্য কাজ করতে চান তবে তাদের ব্যবহার করবেন না।

(দ্রষ্টব্য: এটি 2006 সালে লিখিত একটি নিবন্ধের উদ্ধৃতি, কিন্তু ২015 সালে IE এর ক্রমবর্ধমান ব্যবহার মানে এই যে URL টি সর্বাধিক জন্য কাজ করে। তবে, IE এখনও সীমিত থাকে ...)

ইন্টারনেট এক্সপ্লোরার এর সীমাবদ্ধতা ...

IE8 এর সর্বাধিক URL দৈর্ঘ্য ২083 অক্ষর , এবং মনে হয় IE9 এর অনুরূপ সীমা রয়েছে

আমি IE10 পরীক্ষা করেছি এবং ঠিকানা বার শুধুমাত্র 2083 অক্ষর গ্রহণ করবে। আপনি যে URL টি তার চেয়ে বেশি এটি ক্লিক করতে পারেন, কিন্তু ঠিকানা বারটি এখনও এই লিঙ্কটির ২083 টি অক্ষর দেখাবে।

IE অভ্যন্তরীণ ব্লগটিতে এটির একটি সুন্দর লেখা রয়েছে যা এইরকম কিছু ব্যাকগ্রাউন্ডে চলে যায়।

মিশ্র রিপোর্ট আছে IE11 আর আর URL গুলি সমর্থন করে - নীচের মন্তব্য দেখুন। কিছু লোকের বিষয়গুলি দেওয়া হয়েছে, সাধারণ পরামর্শ এখনও দাঁড়িয়ে আছে।

ইউআরএল সার্চ ইঞ্জিন <2048 অক্ষর ...

সচেতন হোন যে সাইটম্যাপ প্রোটোকল , যা কোনও সাইটকে উপলব্ধ পৃষ্ঠাগুলি সম্পর্কে অনুসন্ধান ইঞ্জিনগুলিকে অবহিত করতে পারে, তার একটি URL এ 2048 অক্ষরের সীমা রয়েছে। আপনি সাইটম্যাপ ব্যবহার করার ইচ্ছা থাকলে, আপনার জন্য একটি সীমা নির্ধারণ করা হয়েছে! (নিচে ক্যালিন-আন্দ্রে বুর্লোইউ এর উত্তর দেখুন)

অনুসন্ধান ইঞ্জিনগুলি ক্রল এবং সূচী করবে এমন সর্বাধিক URL দৈর্ঘ্যের মধ্যে 2010 থেকে কিছু গবেষণা রয়েছে। তারা সীমা 2047 অক্ষর পাওয়া যায়, যা সাইটম্যাপ প্রোটোকল স্পিকের সাথে সম্পর্কিত বলে মনে হয়। যাইহোক, তারাও খুঁজে পেয়েছেন যে Google SERP সরঞ্জামটি 1855 এর চেয়েও বেশি URL গুলির সাথে সামঞ্জস্য করবে না।

অতিরিক্ত ব্রাউজার রাউন্ডআপ

আমি Apache 2.4 সার্ভারের বিরুদ্ধে একটি খুব বড় LimitRequestLine এবং LimitRequestFieldSize সাথে কনফিগার করা নিম্নলিখিতগুলির পরীক্ষা করে দেখলাম।

Browser     Address bar   document.location
                          or anchor tag
------------------------------------------
Chrome          32779           >64k
Android          8192           >64k
Firefox          >64k           >64k
Safari           >64k           >64k
IE11             2047           5120
Edge 16          2047          10240

নীচের Matas Vaitkevicius থেকে এই উত্তরটি দেখুন।

এই তথ্য আপ টু ডেট?

এটি একটি জনপ্রিয় প্রশ্ন, এবং আসল গবেষণাটি ~ 12 বছর বয়সী হিসাবে আমি এটি আপ টু ডেট রাখতে চেষ্টা করব: ২018 সালের সেপ্টেম্বরে , পরামর্শ এখনও দাঁড়িয়েছে। যদিও IE11 সম্ভবত দীর্ঘ URL গুলি গ্রহণ করতে পারে তবে পুরানো IE ইনস্টলেশনের সর্বজনীনতা এবং অনুসন্ধান ইঞ্জিনের সীমাবদ্ধতা মানে 2000 অক্ষরের অধীনে থাকা মানে সর্বশ্রেষ্ঠ সাধারণ নীতি।


ASP.NET 2 এবং SQL সার্ভার রিপোর্টিং পরিষেবাদি 2005 এর সীমা ২0২8 এর মধ্যে রয়েছে। আমি এটি হার্ড উপায় খুঁজে পেয়েছি, যেখানে আমার গতিশীল URL জেনারেটর কোন বিন্দু থেকেও একটি রিপোর্টে কিছু পরামিতি অতিক্রম করবে না। এটি ইন্টারনেট এক্সপ্লোরার 8 এর অধীনে ছিল।


আমার SharePoint 2007, 2010 এর সাথে অভিজ্ঞতা আছে এবং আপনি এই ক্ষেত্রে SharePoint সার্ভারের পক্ষ থেকে তৈরি দৈর্ঘ্যের URL এর একটি সীমা আছে, তাই এটি বেশিরভাগই নির্ভর করে, 1) ক্লায়েন্ট (ব্রাউজার, সংস্করণ, এবং ওএস) এবং 2) সার্ভার প্রযুক্তি, আইআইএস, অ্যাপাচি ইত্যাদি।


আমি এই পরীক্ষাটি লিখেছিলাম যা ব্রাউজারটি ব্যর্থ না হওয়া পর্যন্ত প্যারামিটারে 'a' যোগ করতে থাকে

সি # অংশ:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ParamTest(string x)
{
    ViewBag.TestLength = 0;
    if (!string.IsNullOrEmpty(x))
    {
        System.IO.File.WriteAllLines("c:/result.txt",
                       new[] {Request.UserAgent, x.Length.ToString()});
        ViewBag.TestLength = x.Length + 1;
    }

    return View();
}

দেখুন:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        var text = "a";
        for (var i = 0; i < parseInt(@ViewBag.TestLength)-1; i++) {
            text += "a";
        }

        document.location.href = "http://localhost:50766/Home/ParamTest?x=" + text;
    });
</script>

অংশ 1

ক্রোম আমি পেয়েছিলাম:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
2046

তারপর এটি সঙ্গে blew:

HTTP ত্রুটি 404.15 - পাওয়া যায়নি অনুরোধ ফিল্টারিং মডিউল ক্যোয়ারী স্ট্রিংটি অত্যন্ত দীর্ঘ যেখানে একটি অনুরোধ অস্বীকার করতে কনফিগার করা হয়েছে।

ইন্টারনেট এক্সপ্লোরার 8 এবং ফায়ারফক্স একই

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2046

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
2046

অংশ ২

আমি সহজ মোডে গিয়েছিলাম IISExpress applicationhost.config এবং web.config সেটিংে অতিরিক্ত সীমা যোগ করেছি maxQueryStringLength="32768"

Chrome failed with message 'Bad Request - Request Too Long

HTTP Error 400. The size of the request headers is too long.

7744 অক্ষর পরে।

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
7744

অংশ 3

Added

<headerLimits>
    <add header="Content-type" sizeLimit="32768" />
</headerLimits>

যা সব সময়ে সাহায্য করে না। আমি অবশেষে হেডার থেকে রেফারেল মুছে ফেলার জন্য fiddler ব্যবহার করার সিদ্ধান্ত নিয়েছে।

static function OnBeforeRequest(oSession: Session) {
    if (oSession.url.Contains("localhost:50766")) {
        oSession.RequestHeaders.Remove("Referer");
    }

যা চমত্কারভাবে করেছেন।

ক্রোম: 15613 অক্ষর পেয়েছেন। (আমি এটা আইআইএস জন্য একটি 16 কে সীমা অনুমান)

এবং এটি আবার ব্যর্থ হয়েছে:

<BODY><h2>Bad Request - Request Too Long</h2>
<hr><p>HTTP Error 400. The size of the request headers is too long.</p>


Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
15613

ফায়ারফক্স:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
15708

IExplore.exe ক্র্যাশিংয়ের সাথে ইন্টারনেট এক্সপ্লোরার 8 ব্যর্থ হয়েছে।

2505 পরে

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2505

অ্যান্ড্রয়েড এমুলেটর

Mozilla/5.0 (Linux; Android 5.1; Android SDK built for x86 Build/LKY45) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
7377

ইন্টারনেট এক্সপ্লোরার 11

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

ইন্টারনেট এক্সপ্লোরার 10

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

ইন্টারনেট এক্সপ্লোরার 9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043

কেন ইন্টারনেট এক্সপ্লোরার সীমা মাত্র ২ কে এবং আইআইএসের 16 কেজি সীমা আছে? আমি এটা ইন্দ্রিয় তোলে মনে হয় না।

তাই আমি Ajax অনুরোধ ইউআরএল আকার সীমা সম্পর্কে একটি পরীক্ষা শুরু করতে চান।

আমি আমার টম্যাট HTTP সংযোগকারীর maxHttpHeaderSize = "1048576" সেট করেছি। এবং একটি খুব দীর্ঘ URL প্রস্তুত।

তারপর আমি দীর্ঘ URL সহ নিম্নলিখিত অনুরোধের সাথে একটি অনুরোধ পাঠাতে পারি:

var url="/ajax/url-length.jsp";
jQuery.ajax(url,{data:{q:"0".repeat(1048000-url.length-4)}});

jQuery রিপোর্ট সম্পন্ন। টম্যাটের অনুরোধ করা URL টি 1048015 বাইট। এটি ক্রোম 50 এবং ইন্টারনেট এক্সপ্লোরার 11 দিয়ে পরীক্ষা করা হয়েছিল।

তাই অ্যাজাক্স অনুরোধ পাঠানোর সময় ওয়েব ব্রাউজার ইচ্ছাকৃতভাবে আপনার URL টি বা সীমাবদ্ধ করবে না।


মনে হচ্ছে Chrome কমপক্ষে এই সীমা উত্থাপিত করেছে। আমি বুকমার্কলেটে 20,000 অক্ষর আটকে রেখেছি এবং এটি গ্রহণ করেছে।


সীমা অনুরোধ লাইন নির্দেশিকা একটি URL এর সর্বাধিক দৈর্ঘ্য নির্ধারণ করে। ডিফল্টরূপে, এটি 8190 সেট করা হয়, যা আপনাকে অনেক কক্ষ দেয়। তবে অন্যান্য সার্ভার এবং কিছু ব্রাউজ, দৈর্ঘ্য সীমাবদ্ধ।

কারণ সমস্ত প্যারামিটার URL লাইনে প্রেরিত হয়, লুকানো ক্ষেত্রগুলির পাসওয়ার্ডগুলিতে থাকা আইটেমগুলি অবশ্যই অবশ্যই URL এ প্রদর্শিত হবে। মোবাইলটি বাস্তব নিরাপত্তা ব্যবস্থাগুলির জন্য ব্যবহার করা উচিত নয় এবং সেরা অবস্থায় কসমেটিক নিরাপত্তা বিবেচনা করা উচিত।


মাইক্রোসফ্ট সাপোর্ট বলছে "সর্বাধিক URL দৈর্ঘ্য ২২83 অক্ষর ইন্টারনেট এক্সপ্লোরার"।

IE এর চেয়ে দীর্ঘ URL গুলি সমস্যা আছে। ফায়ারফক্স> 4k অক্ষর দিয়ে সূক্ষ্ম কাজ বলে মনে হচ্ছে।


HTTP 1.1 স্পেসিফিকেশন বলছে:

HTTP এ URIs সম্পূর্ণ ফর্ম বা কিছু আপেক্ষিক প্রতিনিধিত্ব করা যেতে পারে
পরিচিত বেস URI [11], তাদের ব্যবহারের প্রেক্ষাপটে উপর নির্ভর করে। দুই
ফর্মগুলি সর্বদা ইউআরআইগুলি সর্বদা শুরু হওয়ার সাথে আলাদা
একটি কোলন দ্বারা অনুসরণ একটি প্রকল্প নাম সঙ্গে। নির্দিষ্ট তথ্যের জন্য
ইউআরএল সিনট্যাক্স এবং সেমেন্টিক্স দেখুন, "ইউনিফর্ম রিসোর্স আইডেন্টিফায়ারস (ইউআরআই): জেনেরিক সিনট্যাক্স এবং সেমেন্টিক্স," RFC 2396 [42] (যা RFCs 1738 [4] এবং RFC 1808 [11] প্রতিস্থাপন করে)। এই স্পেসিফিকেশন "ইউআরআই-রেফারেন্স", "পরমুটি", "আপেক্ষিকতা", "পোর্ট" সংজ্ঞাগুলি গ্রহণ করে,
"হোস্ট", "abs_path", "rel_path", এবং "কর্তৃপক্ষ" যে থেকে
নির্দিষ্টকরণ।

HTTP প্রোটোকল দৈর্ঘ্যের উপর একটি অগ্রাধিকার সীমা রাখে না
একটি ইউআরআই। সার্ভার অবশ্যই তাদের যে কোনও সংস্থার URI পরিচালনা করতে সক্ষম হবেন এবং যদি তারা GET- ভিত্তিক ফর্মগুলি সরবরাহ করতে পারে তবে এটি Ubs আনবিউড দৈর্ঘ্যের হ্যান্ডেল করতে সক্ষম হবেন। এই সার্ভারটি যেমন URI তৈরি করতে পারে। * একটি সার্ভার 414 ফেরত দিতে হবে (অনুরোধ-URI খুব দীর্ঘ) সার্ভারের চেয়ে বেশি একটি URI যদি অবস্থা পরিচালনা করতে পারে তবে অবস্থা (দেখুন বিভাগ 10.4.15)।

দ্রষ্টব্য: 255 বাইটের উপরে URI দৈর্ঘ্যের উপর নির্ভর করে সার্ভারকে সতর্ক থাকতে হবে, কারণ কিছু পুরোনো ক্লায়েন্ট বা প্রক্সি বাস্তবায়ন এই দৈর্ঘ্যের সঠিকভাবে সমর্থন করে না।

@ ব্রায়ান দ্বারা উল্লেখ করা হয়েছে, HTTP ক্লায়েন্টদের (যেমন ব্রাউজার) তাদের নিজস্ব সীমা থাকতে পারে এবং HTTP সার্ভারগুলির বিভিন্ন সীমা থাকবে।


ইউআই জ্যাকব নিলসেন ইউআরএল হিসাবে সুপারিশ করে:

ওয়েবের জন্য সামাজিক ইন্টারফেসটি ইমেলের উপর নির্ভর করে যখন ব্যবহারকারীরা একে অপরের কাছে ওয়েব পৃষ্ঠাগুলি সুপারিশ করতে চায় এবং ইমেলগুলি নতুন সাইটগুলিতে (সার্চ ইঞ্জিনগুলি সর্বাধিক প্রচলিত) দ্বিতীয়ত সবচেয়ে সাধারণ উপায় ইমেল: নিশ্চিত করুন যে আপনার সমস্ত URL গুলি সাইটের 78 ক্যারেক্টারের চেয়ে কম লম্বা যাতে তারা লাইন ফিড জুড়ে মোড়ানো না হয়।

এটি সর্বাধিক নয় তবে আপনি যদি আপনার URL ভাগ করাতে চান তবে আমি এটি ব্যবহারিক সর্বাধিক বিবেচনা করব।


WWW প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী: একটি URL এর সর্বাধিক দৈর্ঘ্য কি? পরীক্ষামূলক পরীক্ষা এবং গবেষণা উপর ভিত্তি করে নিজস্ব উত্তর আছে। সংক্ষিপ্ত উত্তর হল ২048 টির বেশি অক্ষর যা ইন্টারনেট এক্সপ্লোরারকে অসুখী করে তোলে এবং এইভাবে এই সীমাটি ব্যবহার করা উচিত। একটি দীর্ঘ উত্তর জন্য পৃষ্ঠা দেখুন।





browser