এইচটিটিপি পোস্টের অনুরোধে প্যারামিটারগুলি কীভাবে প্রেরণ করা হয়?


1475

এইচটিটিপি জিইটি অনুরোধে প্যারামিটারগুলি কোয়েরি স্ট্রিং হিসাবে প্রেরণ করা হয় :

http://example.com/page ? প্যারামিটার = মান এবং আরও = অন্য

একটি HTTP পোস্ট অনুরোধে, প্যারামিটারগুলি ইউআরআই সহ প্রেরণ করা হয় না।

মান কোথায়? অনুরোধ শিরোনামে? অনুরোধের শরীরে? এটা কিসের মতো দেখতে?

উত্তর:


1252

মানগুলি অনুরোধের শৃঙ্খলে পাঠানো হয়, যে ধরণের বিষয়বস্তুর ধরণটি নির্দিষ্ট করে।

সাধারণত সামগ্রীর ধরণ থাকে application/x-www-form-urlencodedতাই অনুরোধের বডিটি ক্যোরি স্ট্রিংয়ের মতো একই ফর্ম্যাটটি ব্যবহার করে:

parameter=value&also=another

আপনি যখন ফর্মটিতে কোনও ফাইল আপলোড ব্যবহার করেন, আপনি multipart/form-dataপরিবর্তে এনকোডিং ব্যবহার করেন, যার আলাদা ফর্ম্যাট রয়েছে। এটি আরও জটিল, তবে সাধারণত এটির মতো দেখতে আপনার যত্ন নেওয়া দরকার না, সুতরাং আমি উদাহরণ দেখাব না, তবে এটি বিদ্যমান তা জেনে রাখা ভাল।


25
ফাইল আপলোডগুলি পৃথক হওয়া সম্পর্কে ভুলে গিয়েছিলাম (+ 1 / স্বীকৃত)। আপনার উত্তরটি যথেষ্ট, যদিও এটিতে আরও তথ্য থাকলে তা অতিরিক্ত সুন্দর হবে multipart/form-data। আগ্রহীদের জন্য যদিও এটি সম্পর্কে এখানে একটি প্রশ্ন
ক্যামিলো মার্টিন

73
দ্রষ্টব্য : দেহটি কেবল একটি ফাঁকা রেখার দ্বারা শিরোনাম থেকে পৃথক করা হয় ।
গ্যাব 好人 好人

2
আপনি HTTPBody তে আমরা কী রাখি তা ব্যাখ্যা করেছি, তবে HTTPHeader এ আমরা কী লিখি / লিখব? এটা কি উদ্দেশ্য পরিবেশন করে?
মধু

4
@ মধু: কোনও পোস্টের জন্য এইচটিটিপি শিরোনামটি একটি গেটের মতো দেখায়, তবে জিইটি-র পরিবর্তে POST ক্রিয়া সহ এবং অনুরোধের সামগ্রী (বডি) রয়েছে বলে একটি সামগ্রী ধরণের মান (এবং একটি optionচ্ছিক সামগ্রীর দৈর্ঘ্যের মান) রয়েছে। প্রতিটি ধরণের অনুরোধের শিরোনাম থাকে, কিছু প্রকারের একটি শরীরে থাকে।
গুফা

4
@ কেনেথ ওয়ার্ডেন না, কোনও পদ্ধতি ছাড়াই সঠিকভাবে জেএসএন পাঠাবে। তবে multipart/form-dataআপনি অনুরোধ নির্মাণের দায়িত্বে application/json
থাকাকালীন এনকোডযুক্ত ফর্মটিতে একটি জেসন

428

সামগ্রীটি HTTP শিরোনামের পরে দেওয়া হয়। এইচটিটিপি পোস্টের ফর্ম্যাটটিতে এইচটিটিপি শিরোনামগুলি থাকে, তার পরে একটি ফাঁকা লাইন থাকে, তার পরে অনুরোধ বডি থাকে। POST ভেরিয়েবলগুলি শরীরে কী-মান জোড় হিসাবে সংরক্ষণ করা হয়।

আপনি এটি নীচে দেখানো একটি এইচটিটিপি পোস্টের কাঁচা সামগ্রীতে দেখতে পারেন:

POST /path/script.cgi HTTP/1.0
From: frog@jmarshall.com
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

home=Cosby&favorite+flavor=flies

আপনি এটি ফিদলারের মতো একটি সরঞ্জাম ব্যবহার করে দেখতে পাচ্ছেন , যা আপনি তারের ওপারে পাঠানো কাঁচা এইচটিটিপি অনুরোধ এবং প্রতিক্রিয়া পেললোডগুলি দেখতে ব্যবহার করতে পারেন।


39
কেবলমাত্র যদি সামগ্রীর ধরণ থাকে তবে application/x-www-form-urlencodedযা সর্বদা ক্ষেত্রে হয় না।
গুফা

@ ক্যামিলো মার্টিন .... দুর্দান্ত প্রশ্নের জন্য এবং [জো আলফানো .... [+1] দুর্দান্ত উত্তরের জন্য ....... আমি পোস্টের অনুরোধ সম্পর্কে এখন একটি স্পষ্ট ধারণা পেয়েছি .... তবে যদি কোনও চিত্র কী সহ, ডেটা তথ্যের মূল্য জোড়া নিয়ে আসে ..... POST এর কাঠামোটি কেমন দেখাচ্ছে?
দেবরাথ

9
@ জো, এখন কেন আপনার এখানে একটি Fromশিরোনাম থাকবে?
পেসারিয়ার

@ জো, আমি Fromশিরোনামের এলোমেলোভাবে অন্তর্ভুক্তি পছন্দ করি । আইএমও এটি 418 এইচটিটিপি স্থিতি কোড সহ রয়েছে।
টম হাওয়ার্ড

আপনি কীভাবে কোনও ব্যবহারকারী এবং পাসওয়ার্ড প্রমাণীকরণ যুক্ত করবেন?
m4l490n

376

সংক্ষিপ্ত উত্তর: POST অনুরোধগুলিতে, অনুরোধটির "বডি" তে মানগুলি প্রেরণ করা হয়। ওয়েব ফর্মগুলির সাথে এগুলি সম্ভবত application/x-www-form-urlencodedবা একটি মিডিয়া প্রকারের সাথে প্রেরণ করা হয় multipart/form-data। ভাষা অথবা অবকাঠামো যা হ্যান্ডেল ওয়েব-অনুরোধ পরিকল্পিত হয়েছে সাধারণত এই ধরনের অনুরোধ সঙ্গে "ডান জিনিস ™" এবং (যেমন নির্দ্ধিধায় সঙ্কেতমুক্ত মান সহজ ব্যবহারের অ্যাক্সেস প্রদান প্রোগ্রামিং $_REQUESTবা $_POSTপিএইচপি, বা cgi.FieldStorage(), flask.request.formপাইথন মধ্যে)।


এবার আসুন কিছুটা খনন করি যা পার্থক্যটি বুঝতে সাহায্য করতে পারে;)

GETএবং POSTঅনুরোধগুলির মধ্যে পার্থক্যটি মূলত অর্থপূর্ণ। এগুলি পৃথকভাবে "ব্যবহৃত" হয়, যা মানগুলি কীভাবে পাস হয় তার পার্থক্য ব্যাখ্যা করে।

GET ( প্রাসঙ্গিক আরএফসি বিভাগ )

কোনও GETঅনুরোধ কার্যকর করার সময় , আপনি একটির জন্য সার্ভারের কাছে, বা সত্তাগুলির একটি সেট জিজ্ঞাসা করেন। ক্লায়েন্টকে ফলাফল ফিল্টার করার অনুমতি দেওয়ার জন্য এটি URL এর তথাকথিত "ক্যোয়ারী স্ট্রিং" ব্যবহার করতে পারে। ক্যোরিয় স্ট্রিংয়ের পরে অংশ ?। এটি ইউআরআই সিনট্যাক্সের অংশ ।

সুতরাং, আপনার অ্যাপ্লিকেশন কোডের দৃষ্টিকোণ থেকে (অংশটি যা অনুরোধটি গ্রহণ করে), আপনাকে এই মানগুলিতে অ্যাক্সেস পেতে ইউআরআই কোয়েরি অংশটি পরীক্ষা করতে হবে।

মনে রাখবেন কীগুলি এবং মানগুলি ইউআরআইয়ের অংশ। ব্রাউজারগুলি ইউআরআই দৈর্ঘ্যের উপর একটি সীমা চাপিয়ে দিতে পারে । এইচটিটিপি স্ট্যান্ডার্ড বলছে যে এর কোনও সীমা নেই। কিন্তু এই লেখার সময়, বেশিরভাগ ব্রাউজার না URI উল্লিখিত (আমি নির্দিষ্ট মান থাকতে না) সীমিত। GETঅনুরোধগুলি সার্ভারে নতুন তথ্য জমা দেওয়ার জন্য কখনও ব্যবহার করা উচিত নয় । বিশেষত বড় দলিল নয়। তোমরা কোথায় ব্যবহার করা উচিত এর POSTবা PUT

পোস্ট ( প্রাসঙ্গিক আরএফসি বিভাগ )

একটি POSTঅনুরোধ কার্যকর করার সময় , ক্লায়েন্ট আসলে দূরবর্তী হোস্টে একটি নতুন দস্তাবেজ জমা দিচ্ছে। সুতরাং, একটি ক্যোয়ারী স্ট্রিং (শব্দার্থবিজ্ঞান) অর্থ দেয় না। যে কারণে আপনার নিজের অ্যাপ্লিকেশন কোডে তাদের অ্যাক্সেস নেই।

POSTকিছুটা জটিল (এবং আরও নমনীয় উপায় ):

কোনও পোস্টের অনুরোধটি গ্রহণ করার সময়, আপনার সর্বদা একটি "পে-লোড" আশা করা উচিত, বা, HTTP পদে: একটি বার্তা সংস্থা । কোনও মান নেই (যতদূর আমি বলতে পারি Maybe সম্ভবত অ্যাপ্লিকেশন / অক্টেট-স্ট্রিম?) ফর্ম্যাটটি ম্যাসেজের বডিটি নিজেই বেশ বেহুদা । বডি ফর্ম্যাট Content-Typeশিরোনাম দ্বারা সংজ্ঞায়িত করা হয় । এইচটিএমএল FORMউপাদানটি ব্যবহার করার সময় method="POST"এটি সাধারণত application/x-www-form-urlencoded। আর একটি খুব সাধারণ ধরণ হ'ল মাল্টিপার্ট / ফর্ম-ডেটা যদি আপনি ফাইল আপলোড ব্যবহার করেন। তবে এটি কোনও প্রথা থেকে শুরু করে এমনকি কিছু হতে পারে ।text/plainapplication/jsonapplication/octet-stream

যে কোনও ক্ষেত্রে, যদি POSTঅনুরোধটি এমন কোনও সাথে করা হয় Content-Typeযা অ্যাপ্লিকেশন দ্বারা পরিচালনা করা যায় না, তবে এটি একটি 415স্থিতি-কোডটি ফিরিয়ে আনবে

বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজ (এবং / অথবা ওয়েব-ফ্রেমওয়ার্ক) সবচেয়ে সাধারণ প্রকারের (যেমন application/x-www-form-urlencoded, multipart/form-dataবা application/json) থেকে ম্যাসেজের বডিটি ডি / এনকোড করার একটি উপায় সরবরাহ করে । সুতরাং যে সহজ। কাস্টম ধরণেরগুলির জন্য সম্ভবত আরও কিছু কাজ করা প্রয়োজন।

উদাহরণস্বরূপ একটি স্ট্যান্ডার্ড এইচটিএমএল ফর্ম এনকোডড নথি ব্যবহার করে, অ্যাপ্লিকেশনটির নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করা উচিত:

  1. Content-Typeফিল্ড পড়ুন
  2. মানটি যদি কোনও সমর্থিত মিডিয়া-প্রকারের না হয় তবে 415স্থিতি কোড সহ প্রতিক্রিয়া ফিরিয়ে দিন
  3. অন্যথায়, বার্তাটির প্রধান থেকে মানগুলি ডিকোড করুন।

আবার, পিএইচপি, বা অন্যান্য জনপ্রিয় ভাষার ওয়েব ফ্রেমওয়ার্কের মতো ভাষা সম্ভবত আপনার জন্য এটি পরিচালনা করবে। এর ব্যতিক্রম 415ত্রুটি। কোনও অ্যাপ্লিকেশন কোনও অনুমান করতে পারে না যে আপনার অ্যাপ্লিকেশনটি কোন ধরণের-ধরণের প্রকারটি সমর্থন করে এবং / বা সমর্থন সমর্থন করে না। এটি সম্পূর্ণভাবে আপনার জন্য।

পুট ( প্রাসঙ্গিক আরএফসি বিভাগ )

একটি PUTঅনুরোধ অনুরোধ হিসাবে ঠিক ঠিক একইভাবে পরিচালনা করা হয় POST। বড় পার্থক্য হ'ল একটি POSTঅনুরোধটি সার্ভারকে সিদ্ধান্ত নিতে দেয় যে কীভাবে একটি নতুন সংস্থান তৈরি করা যায় (এবং যদি হয় তবে)। Icallyতিহাসিকভাবে (এখন অপ্রচলিত আরএফসি 2616 থেকে অনুরোধটি প্রেরিত হয়েছিল এমন ইউআরআইয়ের "অধস্তন" (শিশু) হিসাবে একটি নতুন সংস্থান তৈরি করা ছিল)।

একজন PUTবিপরীতে অনুরোধ ঠিক "আমানত" একটি সম্পদ অনুমিত হয় যে কোনো URI, এবং ঠিক যে সামগ্রী অন্তর্ভুক্ত রয়েছে। বেশিও না, কমও না. ধারণাটি হ'ল ক্লায়েন্ট "পুটিং" এর আগে সম্পূর্ণ সংস্থানটি তৈরি করার জন্য দায়বদ্ধ । প্রদত্ত ইউআরএলটিতে সার্ভারের এটি যেমন রয়েছে তেমন গ্রহণ করা উচিত ।

ফলস্বরূপ, একটি POSTঅনুরোধ সাধারণত বিদ্যমান সংস্থানটি প্রতিস্থাপনের জন্য ব্যবহৃত হয় না । একটি PUTঅনুরোধ তৈরি এবং প্রতিস্থাপন উভয়ই করতে পারে ।

সাইড নোট

এছাড়াও " পথের পরামিতি " রয়েছে যা দূরবর্তীগুলিতে অতিরিক্ত ডেটা প্রেরণে ব্যবহার করা যেতে পারে, তবে এগুলি এতটা অস্বাভাবিক, যে আমি এখানে খুব বেশি বিশদে যাব না। তবে, রেফারেন্সের জন্য, এখানে আরএফসির একটি অংশ রয়েছে:

শ্রেণিবদ্ধ পাথগুলিতে বিন্দু-বিভাগগুলি বাদ দিয়ে একটি পাথ বিভাগকে জেনেরিক সিনট্যাক্স দ্বারা অস্বচ্ছ হিসাবে বিবেচনা করা হয়। ইউআরআই উত্পাদনকারী অ্যাপ্লিকেশনগুলি প্রায়শই কোনও বিভাগে অনুমোদিত স্ক্রিন-সুনির্দিষ্ট বা ডেরারফারেন্স-হ্যান্ডলার-নির্দিষ্ট উপ-উপাদানগুলি সীমিত করতে অনুমোদিত অক্ষরগুলি ব্যবহার করে। উদাহরণস্বরূপ, সেমিকোলন (";") এবং সমান ("=") সংরক্ষিত অক্ষরগুলি প্রায়শই সেগমেন্টে প্রযোজ্য পরামিতি এবং পরামিতি মানগুলি ব্যবহার করতে ব্যবহৃত হয়। কমা (",") সংরক্ষিত অক্ষরটি প্রায়শই একই উদ্দেশ্যে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি ইউআরআই প্রযোজক "নাম" এর ১.১ সংস্করণ উল্লেখ উল্লেখ করতে "নাম; ভি = ১.১" এর মতো একটি বিভাগ ব্যবহার করতে পারে, অন্যদিকে একই নামটি বোঝাতে "নাম, ১.১" এর মতো একটি বিভাগ ব্যবহার করা যেতে পারে। প্যারামিটারের ধরনগুলি স্কিম-নির্দিষ্ট শব্দার্থ দ্বারা সংজ্ঞায়িত করা যেতে পারে,


1
আমি সত্যিই একটি সামান্য স্পর্শক উপর যেতে পারে। আমি উত্তরের উপরে একটি "টিএল; ড্র" যুক্ত করেছি যা এটি আরও পরিষ্কার করে দেওয়া উচিত।
এক্সুমা

আমি এখনই এটি আরএফসি 2623 (যা কিছু সময়ের জন্য অচল হয়ে পড়েছে) এর পরিবর্তে আরএফসি 7231 এর রেফারেন্সে সম্পাদনা করেছি। আপডেট হওয়া লিঙ্কগুলি বাদে এই উত্তরের মূল পার্থক্যটি "পিটিউ" বিভাগে রয়েছে।
exhuma

আমি ভেবেছিলাম পিটিএসটি পোষ্টের চেয়ে আলাদাভাবে পরিচালনা করা হয়েছে কারণ এটি আদর্শবান হওয়ার কথা? stackoverflow.com/questions/611906/...
rogerdpack

1
@rogerdpack আপনি ভুল নন আপনি দ্বিতীয় অনুচ্ছেদ পড়ুন PUTঅধ্যায়, আপনি এটি দেখতে হবে হয় idempotent। POSTবিপরীতে করতে পারেন - সংজ্ঞা অনুসারে - না। POSTসর্বদা একটি নতুন সংস্থান তৈরি করবে। PUTহবে, যদি একটি অভিন্ন উত্স বিদ্যমান এটি প্রতিস্থাপন। সুতরাং আপনি যদি POST10 বার কল করেন তবে আপনি 10 সংস্থান তৈরি করবেন। আপনি যদি PUT10 বার কল করেন তবে এটি (সম্ভবত) কেবল একটি তৈরি করবে। এতে আপনার প্রশ্নের উত্তর হলো কি?
exhuma

59

আপনি এটি সরাসরি ব্রাউজারের URL বারে টাইপ করতে পারবেন না।

উদাহরণস্বরূপ লাইভ এইচটিটিপি শিরোনামের সাহায্যে কীভাবে ইন্টারনেটে পোষ্ট ডেটা পাঠানো হয় তা আপনি দেখতে পারেন । ফলাফল কিছু হবে

http://127.0.0.1/pass.php
POST /pass.php HTTP/1.1

Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://127.0.0.1/pass.php
Cookie: passx=87e8af376bc9d9bfec2c7c0193e6af70; PHPSESSID=l9hk7mfh0ppqecg8gialak6gt5
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
username=zurfyx&pass=password

যেখানে এটা বলে

Content-Length: 30
    username=zurfyx&pass=password

পোস্ট মান হবে।


2
স্পষ্টতা: এখানে থাকার Content-Lengthকথা 29? এটি স্ট্রিংয়ের আসল দৈর্ঘ্য username=zurfyx&pass=password
হিপ্পো

@ হিপ্পো একটি নতুন লাইনের চরিত্র সেখানে থাকার মানে কি?
ভাইকিংস্টিভ

পছন্দ করেছেন সুতরাং আমি অনুমান করি বিষয়বস্তুর সবসময় এর শেষে একটি নতুন লাইন থাকে, তবে।
হিপ্পো


24

কোনও পোষ্ট অনুরোধে ডিফল্ট মিডিয়া টাইপ application/x-www-form-urlencoded। এটি কী-মান জোড়ার এনকোডিংয়ের জন্য একটি ফর্ম্যাট। কীগুলি সদৃশ হতে পারে। প্রতিটি কী-মান জুটি একটি &অক্ষর দ্বারা পৃথক করা হয় , এবং প্রতিটি কী একটি =অক্ষর দ্বারা তার মান থেকে পৃথক হয় ।

উদাহরণ স্বরূপ:

Name: John Smith
Grade: 19

হিসাবে এনকোড করা হয়েছে:

Name=John+Smith&Grade=19

এটি এইচটিটিপি শিরোনামের পরে অনুরোধ সংস্থায় স্থাপন করা হয়েছে।


1
আপনি HTTPBody তে আমরা কী রাখি তা ব্যাখ্যা করেছি, তবে HTTPHeader এ আমরা কী লিখি / লিখব?
মধু

আপনি উল্লেখ করেছেন যে কীটি সদৃশ হয়ে উঠতে পারে, তবে এই জাতীয় সদৃশটির ফলাফল কী হবে? শেষেরটি কি স্বয়ংক্রিয়ভাবে পূর্বের মানগুলি ওভাররাইট করবে? ধন্যবাদ।
জিংহুই নিু

@ জিংহুইনিউ যদি কীটি সদৃশ হয় তবে এটি অ্যারে হিসাবে পার্স করা উচিত। এটি খুব দেরিতে তবে অন্য কারও সাহায্য করতে পারে।
হনশ ইয়াসলেম

18

এইচটিটিপি পোস্টগুলিতে ফর্মের মানগুলি অনুরোধের শৃঙ্খলে, ক্যোরিস্ট্রিংয়ের মতো একই ফর্ম্যাটে প্রেরণ করা হয়।

আরও তথ্যের জন্য, চশমা দেখুন


5
"একই ফর্ম্যাট" কিছুটা অস্পষ্ট। তারা ?উদাহরণস্বরূপ দিয়ে শুরু করবেন ?
ক্যামিলো মার্টিন

7
@ পিটারওউস্টার হ্যাঁ, তবে একটি উদাহরণ সরবরাহ করে না। সে ক্ষেত্রে, এমন একটি উত্তরের মতো যা "দেখুন, অ্যাপ্লিকেশনটির ব্লগে (লিঙ্ক) " এ আপনার প্রশ্নের উত্তর আছে says
ক্যামিলো মার্টিন

36
@ পিটারওয়াস্টার এটির প্রয়োজন নেই, তবে আপনি খুব ভুলে গেলে খুব ভাল, অত্যধিক-বিস্তারিত চশমা যা ব্যাপক হলেও, রিফ্রেশকারীদের পক্ষে অযোগ্য। এটি সম্পর্কে চিন্তা করুন: এই সাইটের বেশিরভাগ কিউএ "স্পেক / ম্যানুয়াল / এপিআই / ইত্যাদি (লিঙ্ক) পড়তে যেতে" নামতে পারে । এটি দরকারী হবে? গুগলের চেয়ে বেশি নয়।
ক্যামিলো মার্টিন

2
কেবলমাত্র যদি সামগ্রীর ধরণ থাকে তবে application/x-www-form-urlencodedযা সর্বদা ক্ষেত্রে হয় না।
গুফা

3
জিইটি কোয়েরি স্ট্রিংয়ের ফর্ম্যাটটি অ্যাপ্লিকেশন / x-www-form-urlencoded এর চেয়ে আলাদা। উদাহরণস্বরূপ, সাদা স্থানটি আলাদাভাবে এনকোড করা হয়েছে (% 20 বনাম +)। উত্তরটি এক্ষেত্রে বিভ্রান্তিকর।
অনিচ্ছুকচক্র্যাক্টর

18

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

পোস্টের অনুরোধটি শব্দার্থভাবে দেখতে দেখতে লাগতে পারে:

POST /?AuthId=YOURKEY&Action=WebServiceAction&Signature=rcLXfkPldrYm04 HTTP/1.1
Content-Type: text/tab-separated-values; charset=iso-8859-1
Content-Length: []
Host: webservices.domain.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

name    id
John    G12N
Sarah   J87M
Bob     N33Y

এই পদ্ধতির যুক্তিযুক্তভাবে কোয়েরিস্ট্রিং এবং বডি-পোস্টকে একক ব্যবহার করে Content-Typeযা একটি ওয়েব-সার্ভারের জন্য "পার্সিং-নির্দেশনা" using

দয়া করে নোট করুন: HTTP / 1.1 বামদিকে (স্থান) এবং ডানদিকে (লাইন ফিড) দিয়ে মোড়ানো রয়েছে ।#32#10


মধ্যে পার্থক্য /user/johnএবং /?user=johnনিছক একটি শব্দার্থিক এক (HTTP- র সত্যিই ক্যোয়ারী স্ট্রিং বিশেষ চিকিত্সা দেয় না) হল তাই আমি এই নিতে হিসাবে যুক্তিসঙ্গতভাবে প্রত্যাশিত। তবে "বামে স্থান দিয়ে মোড়ানো" বলতে কী বোঝ? HTTP পদ্ধতির আগে কোনও স্থান নেই s আপনি পোস্ট বডি জন্য ফাঁকা রেখা মানে?
ক্যামিলো মার্টিন

উপরের কোডের মধ্যে ...Ym04এবং এর HTTP/1.1মধ্যে একটি স্থান রয়েছে (ASCII # 32) । সুতরাং একটি কোয়েরিস্ট্রিং কেবল ক্রিয়াপদ এবং প্রোটোকল সংস্করণের মধ্যে থাকে।
ইন্টারফেস অজানা

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

1
আমি কেবল কোডটিতে চিহ্নিত করতে পারি না তার উপর জোর দিয়েছি। এটি সুস্পষ্ট মনে হতে পারে তবে কখনও কখনও তা হয় না।
ইন্টারফেস অজানা

এটি সত্য যে আমরা ইউআরআই এবং প্যারামিটারগুলিকে আলাদা করে অনুরোধগুলির সাথে আলাদা করে URL এর অংশ হিসাবে ক্যোয়ারী প্যারামিটারগুলি পাস ?করতে পারি GET
জিজ্ঞাসা করুন

8

প্রথম সব, এর পার্থক্য দিন মধ্যবর্তী GETএবংPOST

পান: এটা ডিফল্ট HTTPঅনুরোধ সার্ভারে তৈরি করা হয় এবং সার্ভার এবং কোয়েরি স্ট্রিং যে পরে আসে থেকে তথ্য পুনরুদ্ধার করতে ব্যবহার করা হয় ?একটি URIএকটি অনন্য সম্পদ আহরণের জন্য ব্যবহার করা হয়।

এটি ফর্ম্যাট

GET /someweb.asp?data=value HTTP/1.0

এখানে data=valueকোয়েরি স্ট্রিংয়ের মানটি পাস হয়েছে।

পোস্ট: এটি সার্ভারে নিরাপদে ডেটা প্রেরণে ব্যবহৃত হয় যাতে যে কোনও প্রয়োজন হয়, এটি একটি POSTঅনুরোধের ফর্ম্যাট

POST /somweb.aspHTTP/1.0
Host: localhost
Content-Type: application/x-www-form-urlencoded //you can put any format here
Content-Length: 11 //it depends
Name= somename

জিইটি-তে পোস্ট করুন কেন?

ইন GETমান সার্ভারে পাঠানো হচ্ছে সাধারণত ক্যোয়েরি স্ট্রিং বেস URL এ যোগ করা হয়, এখন এই 2 পরিণতি হয়

  • GETঅনুরোধ পরামিতি সঙ্গে ব্রাউজার ইতিহাসে সংরক্ষিত রয়েছে। সুতরাং আপনার পাসওয়ার্ডগুলি ব্রাউজারের ইতিহাসে এনক্রিপ্ট করা থেকে যায়। দিনগুলিতে এটি ফেসবুকের জন্য একটি বাস্তব সমস্যা ছিল।
  • সাধারণত কত দিন URIহতে পারে তার সার্ভারগুলির একটি সীমা থাকে । যদি অনেক বেশি পরামিতি প্রেরণ করা হয় তবে আপনি গ্রহণ করতে পারেন414 Error - URI too long

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

সার্ভারগুলিতে কীভাবে অনুরোধ করা হয় সে সম্পর্কে প্রাথমিক তথ্য দেখতে আপনি Google বিকাশকারী সরঞ্জামের নেটওয়ার্ক বিভাগটি ব্যবহার করতে পারেন।

এবং আপনি সবসময় আপনার আরও মান যোগ করতে পারেন Request Headersমত Cache-Control, Origin, Accept


4
সুরক্ষা সম্পর্কে অনুমানগুলি কেবল HTTPSসংযোগের প্রসঙ্গে সত্য , না HTTPHTTPSউভয় URL(ক্যোয়ারী প্যারাম সহ) এবং Request Bodyযখন HTTPএনক্রিপ্ট / সুরক্ষা দেয় না উভয় এনক্রিপ্ট করে। বর্ণিত সমস্যাটি আসল সত্য থেকে আসে যে অনেক ব্রাউজার তাদের ইতিহাসের ডেটাবেজে (সাধারণত এনক্রিপ্ট না করে) স্টোর করে URIs(সহ URLs) সঞ্চয় করে । সুতরাং, সংবেদনশীল যে কোনও কিছুর জন্য কেবলমাত্র Request Body+ HTTPSব্যবহার করুন।
পেট্রু জাহারিয়ার

@ পেট্রুজাহারিয়া আমি আপনার ব্যাখ্যার সাথে একমত আপনি এটিকে সম্পাদনা হিসাবেও পরামর্শ দিতে পারেন এবং আমি গ্রহণ করে খুশি হব! :)
জিশান আদিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.