HTTP POST ඉල්ලීමක පරාමිතීන් යවන්නේ කෙසේද?


1486

HTTP GET ඉල්ලීමකදී , පරාමිතීන් විමසුම් නූලක් ලෙස යවනු ලැබේ :

http://example.com/page ? පරාමිතිය = අගය සහ තවත් =

HTTP POST ඉල්ලීමකදී , පරාමිතීන් URI සමඟ යවනු නොලැබේ.

සාරධර්ම කොහෙද? ඉල්ලීම් ශීර්ෂය තුළ? ඉල්ලීම් මණ්ඩලයේද? ඒක මොන වගේද?

Answers:


1267

අගයන් ඉල්ලීම් ශරීරය තුළ, අන්තර්ගත වර්ගය නියම කරන ආකෘතියට යවනු ලැබේ.

සාමාන්‍යයෙන් අන්තර්ගතයේ වර්ගය application/x-www-form-urlencoded, එබැවින් ඉල්ලීම් ආයතනය විමසුම් නූලට සමාන ආකෘතියක් භාවිතා කරයි:

parameter=value&also=another

ඔබ පෝරමයේ ගොනු උඩුගත කිරීමක් භාවිතා කරන විට, ඔබ multipart/form-dataඒ වෙනුවට කේතන ක්‍රමය භාවිතා කරයි, එය වෙනස් ආකෘතියක් ඇත. එය වඩාත් සංකීර්ණයි, නමුත් සාමාන්‍යයෙන් ඔබට එය පෙනෙන්නේ කුමක් දැයි සැලකිලිමත් වීමට අවශ්‍ය නැත, එබැවින් මම උදාහරණයක් පෙන්වන්නේ නැත, නමුත් එය පවතින බව දැන ගැනීම හොඳ විය හැකිය.


25
ගොනු උඩුගත කිරීම් වෙනස් වීම මට අමතක වී තිබුණි (+ 1 / පිළිගත්). ඔබේ පිළිතුර ප්‍රමාණවත් වන අතර, එය පිළිබඳ වැඩි විස්තර තිබේ නම් එය අතිරේක වනු ඇත multipart/form-data. උනන්දුවක් දක්වන අය සඳහා, මෙන්න ඒ ගැන ප්‍රශ්නයක් .
කැමිලෝ මාටින්

73
සටහන : සිරුර ශීර්ෂයෙන් එක් හිස් පේළියකින් වෙන් කරනු ලැබේ .
ගබ් 是 好人

2
අපි HTTPBody හි තබන දේ ඔබ පැහැදිලි කළා, නමුත් අපි HTTPHeader හි ස්ථානගත කරන්නේ / ලියන්නේ කුමක්ද? එය ඉටු කරන්නේ කුමන අරමුණක් සඳහාද?
මී පැණි

4
Oney හනී: තනතුරක් සඳහා වන HTTP ශීර්ෂය ලබා ගැනීම සඳහා එකක් සේ පෙනේ, නමුත් GET වෙනුවට POST යන ක්‍රියා පදය සමඟින්, සහ ඉල්ලීමෙහි අන්තර්ගතය (ශරීරය) ඇති බැවින් අන්තර්ගත වර්ගයේ අගය (සහ විකල්ප අන්තර්ගත දිග අගය). සෑම වර්ගයකම ඉල්ලීමකට ශීර්ෂයක් ඇත, සමහර වර්ගවල ශරීරයක් ද ඇත.
ගුෆා

4
Enn කෙනත් වර්ඩන් නැත, ක්‍රම නොවන නිසා නිසි ලෙස JSON යවනු ලැබේ. කෙසේ වෙතත් ඔබට ජේසන් ගොනුවක් කේතනය කර ඇති පෝරමයකින් උඩුගත කළ හැකිය, multipart/form-dataනැතහොත් ඔබ ඉල්ලීම් ඉදිකිරීම භාරව සිටී නම්, අන්තර්ගත වර්ගය වෙනස් කර application/json
ජේසන්

430

අන්තර්ගතය HTTP ශීර්ෂයන්ට පසුව තබා ඇත. HTTP POST හි ආකෘතිය වන්නේ HTTP ශීර්ෂයන් තිබීම, ඉන්පසු හිස් පේළියක් සහ ඉල්ලීම් ආයතනයයි. POST විචල්‍යයන් ශරීරයේ යතුරු අගය යුගල ලෙස ගබඩා කර ඇත.

පහත දැක්වෙන HTTP පෝස්ට් එකක අමු අන්තර්ගතයෙන් ඔබට මෙය දැකිය හැකිය:

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

ඔබට මෙය ෆිද්ලර් වැනි මෙවලමක් භාවිතයෙන් දැක ගත හැකිය , එමඟින් අමු HTTP ඉල්ලීම සහ ප්‍රතිචාර ගෙවීම් කම්බි හරහා යවනු ලැබේ.


40
අන්තර්ගත වර්ගය නම් පමණක් application/x-www-form-urlencodedවන අතර එය සැමවිටම එසේ නොවේ.
ගුෆා

@ කැමිලෝ මාටින් .... [+1] විශාල ප්‍රශ්නයක් සඳහා සහ @ ජෝ ඇල්ෆානෝ .... [+1] හොඳ පිළිතුරක් සඳහා ....... මට දැන් POST ඉල්ලීම ගැන පැහැදිලි අදහසක් ලැබුණි .... නමුත් රූපයක් යතුර, වටිනාකමින් යුත් දත්ත තොරතුරු සමඟ පැමිණේ නම් ..... POST හි ව්‍යුහය පෙනෙන්නේ කෙසේද?
දේව්රත්

9
Oe ජෝ, දැන් ඔබට එහි Fromශීර්ෂයක් තිබෙන්නේ ඇයි?
පැසීරියර්

Oe ජෝ, මම අහඹු ලෙස Fromශීර්ෂකය ඇතුළත් කිරීමට කැමතියි . IMO එය 418 HTTP තත්ව කේතය සමඟ ඇත.
ටොම් හොවාර්ඩ්

ඔබ පරිශීලකයෙකු සහ මුරපද සත්‍යාපනය එකතු කරන්නේ කෙසේද?
m4l490n

383

කෙටි පිළිතුර: POST ඉල්ලීම් වලදී, ඉල්ලීම්වල "ශරීරය" තුළ අගයන් යවනු ලැබේ. වෙබ් පෝරම සමඟ ඒවා බොහෝ විට යවනු ලබන්නේ මාධ්‍ය වර්ගයක application/x-www-form-urlencodedහෝ multipart/form-data. හසුරුව වෙබ් ඉල්ලීම් කිරීමට නිර්මාණය කර ඇති පරිගණක භාෂාව හෝ රාමුව සාමාන්යයෙන් එවැනි ඉල්ලීම් සමග "හරි දේ ™" කරන්න සහ පහසුවෙන් විකේත තළ අගයන් (වගේ වෙත පිවිසීම සඳහා ඔබට ලබා $_REQUESTහෝ $_POSTPHP හි, හෝ cgi.FieldStorage(), flask.request.formPython දී).


දැන් අපි ටිකක් දුරස් වෙමු, එය වෙනස තේරුම් ගැනීමට උපකාරී වේ;)

අතර වෙනස GETසහ POSTඉල්ලීම් බොහෝ දුරට ඍජු ඉල්ලීම් වේ. ඒවා ද වෙනස් ලෙස "භාවිතා" කරනු ලැබේ, එමඟින් සාරධර්ම සම්මත වන ආකාරයෙහි වෙනස පැහැදිලි කරයි.

GET ( අදාළ RFC අංශය )

GETඉල්ලීමක් ක්‍රියාත්මක කිරීමේදී , ඔබ සේවාදායකයාගෙන් එකක් හෝ ආයතන සමූහයක් ඉල්ලයි. ප්‍රති result ලය පෙරීමට සේවාදායකයාට ඉඩ දීම සඳහා, එය URL හි ඊනියා "විමසුම් නූල" භාවිතා කළ හැකිය. විමසුම් දාමය යනු පසු කොටසයි ?. මෙය යූආර්අයි සින්ටැක්ස් හි කොටසකි .

එබැවින්, ඔබගේ යෙදුම් කේතයේ දෘෂ්ටි කෝණයෙන් ( ඉල්ලීම ලැබෙන කොටස ), මෙම අගයන් වෙත ප්‍රවේශය ලබා ගැනීම සඳහා ඔබ යූආර්අයි විමසුම් කොටස පරීක්ෂා කළ යුතුය.

යතුරු සහ අගයන් URI හි කොටසක් බව සලකන්න. බ්‍රව්සර් යූආර්අයි දිගට සීමාවක් පැනවිය හැකිය . HTTP ප්‍රමිතියේ සඳහන් වන්නේ සීමාවක් නොමැති බවයි. නමුත් මේ ලියන අවස්ථාව වන විට, බොහෝ වෙබ් බ්රව්සර් කරන්න ඇති URIs (මම විශේෂිත වටිනාකම් නැහැ), සීමා. සේවාදායකයට නව තොරතුරු ඉදිරිපත් කිරීමට GETඉල්ලීම් කිසි විටෙකත් භාවිතා නොකළ යුතුය. විශේෂයෙන් විශාල ලේඛන නොවේ. ඔබ භාවිතා කළ යුතු එය කරයි POSTහෝ PUT.

POST ( අදාළ RFC අංශය )

POSTඉල්ලීමක් ක්‍රියාත්මක කිරීමේදී , සේවාදායකයා ඇත්ත වශයෙන්ම දුරස්ථ ධාරකයට නව ලේඛනයක් ඉදිරිපත් කරයි . එබැවින්, විමසුම් දාමයක් (අර්ථාන්විතව) තේරුමක් නැත. ඔබගේ යෙදුම් කේතය තුළ ඔබට ඒවාට ප්‍රවේශය නොමැති වන්නේ එබැවිනි.

POSTටිකක් වඩාත් සංකීර්ණ (සහ ය ක්රමයක් වඩාත් නම්යශීලී):

POST ඉල්ලීමක් ලැබෙන විට, ඔබ සැමවිටම "ගෙවීමක්" අපේක්ෂා කළ යුතුය, නැතහොත්, HTTP පද වලින්: පණිවිඩ ආයතනයක් . ප්‍රමිතියක් නොමැති නිසා (මට කිව හැකි තාක් දුරට, යෙදුම / ඔක්ටේට්-ප්‍රවාහය?) ආකෘතියක් නොමැති බැවින් පණිවුඩ ශරීරයම නිෂ් less ල ය. ශරීර ආකෘතිය Content-Typeශීර්ෂකය මගින් අර්ථ දක්වා ඇත . FORMසමඟ HTML අංගයක් භාවිතා කරන විට method="POST", මෙය සාමාන්‍යයෙන් application/x-www-form-urlencodedවේ. තවත් ඉතා සුලභ වර්ගයක් වන්නේ ඔබ ගොනු උඩුගත කිරීම් භාවිතා කරන්නේ නම් බහුපාර්ට් / පෝරම-දත්ත ය . නමුත් එය කළ හැකි දෙයක් දක්වා වූ, text/plain, අධික application/jsonහෝ චාරිත්රයක් application/octet-stream.

ඕනෑම අවස්ථාවක, යෙදුම විසින් හැසිරවිය නොහැකි POSTඉල්ලීමක් කළහොත් Content-Type, එය 415තත්ව කේතයක් ලබා දිය යුතුය .

බොහෝ ක්‍රමලේඛන භාෂා (සහ / හෝ වෙබ් රාමු) පණිවිඩ ශරීරය / සිට වඩාත් පොදු වර්ග දක්වා (වැනි application/x-www-form-urlencoded, multipart/form-dataහෝ application/json) අක්‍රීය කිරීමට / කේතනය කිරීමට ක්‍රමයක් ඉදිරිපත් කරයි . එබැවින් එය පහසුය. අභිරුචි වර්ග සඳහා තව ටිකක් වැඩ අවශ්‍ය වේ.

නිදසුනක් ලෙස සම්මත HTML පෝරම කේතනය කළ ලේඛනයක් භාවිතා කරමින්, යෙදුම පහත පියවරයන් අනුගමනය කළ යුතුය:

  1. මේ බලන්න Content-Typeක්ෂේත්රයේ
  2. අගය සහය දක්වන මාධ්‍ය වර්ග වලින් එකක් නොවේ නම්, 415තත්ව කේතයක් සමඟ ප්‍රතිචාරයක් ලබා දෙන්න
  3. එසේ නොමැතිනම්, පණිවිඩ ශරීරයෙන් අගයන් විකේතනය කරන්න.

නැවතත්, PHP වැනි භාෂා හෝ වෙනත් ජනප්‍රිය භාෂාවන් සඳහා වෙබ් රාමු ඔබ වෙනුවෙන් මෙය හසුරුවනු ඇත. මෙයට ව්‍යතිරේකය වන්නේ 415දෝෂයයි. ඔබගේ යෙදුම සහාය දැක්වීමට සහ / හෝ සහාය නොදක්වන්නේ කුමන අන්තර්ගත වර්ගදැයි පුරෝකථනය කිරීමට කිසිදු රාමුවකට නොහැකිය. මෙය ඔබට භාරයි.

PUT ( අදාළ RFC අංශය )

PUTඉල්ලීම එච්චරමයි ලෙස හරියටම සමාන ආකාරයකින් සිදු කෙරේ POSTඉල්ලීමක්. විශාල වෙනස වන්නේ POSTඉල්ලීමක් මඟින් නව සම්පතක් නිර්මාණය කරන්නේ කෙසේද යන්න තීරණය කිරීමට සේවාදායකයාට ඉඩ දීමයි. Ically තිහාසිකව (දැන් යල්පැන ඇති RFC2616 සිට ඉල්ලීම යවන ලද URI හි "යටත්" (ළමා) ලෙස නව සම්පතක් නිර්මාණය කිරීම විය).

ඊට PUTහාත්පසින්ම වෙනස් ඉල්ලීමක් සම්පතක් හරියටම එම යූආර්අයි හි තැන්පත් කළ යුතු අතර හරියටම එම අන්තර්ගතය සමඟ . තවත් නැත, අඩු නොවේ. අදහස නම් " සම්පූර්‍ණය " කිරීමට පෙර සම්පූර්ණ සම්පත සැකසීමට සේවාදායකයා වගකිව යුතු බවයි. දී ඇති URL හි ඇති ආකාරයට සේවාදායකයා එය පිළිගත යුතුය .

ප්‍රති consequ ලයක් ලෙස, පවතින සම්පතක් ප්‍රතිස්ථාපනය කිරීම සඳහා POSTඉල්ලීමක් සාමාන්‍යයෙන් භාවිතා නොවේ . ඒ ඉල්ලීම මේ දෙකම කරන්නේ නිර්මාණය කළ හැකි හා වෙනුවට.PUT

පැති සටහන

දුරස්ථයට අතිරේක දත්ත යැවීම සඳහා භාවිතා කළ හැකි " මාර්ග පරාමිතීන් " ද ඇත, නමුත් ඒවා ඉතා සුලභ ය, මම මෙහි වැඩි විස්තරයකට නොයමි. එහෙත්, යොමු කිරීම සඳහා, මෙන්න RFC වෙතින් උපුටා ගැනීමකි:

ධූරාවලි මාවත්වල තිත්-කොටස් හැරුණු විට, සාමාන්‍ය සින්ටැක්ස් මගින් මාර්ග ඛණ්ඩයක් පාරාන්ධ ලෙස සැලකේ. යූආර්අයි නිපදවන යෙදුම් බොහෝ විට යෝජනා ක්‍රමයට විශේෂිත වූ හෝ විරූපණය-හසුරුවන-විශේෂිත උප සං on ටක සීමා කිරීම සඳහා කොටසක ඉඩ දී ඇති වෙන් කළ අක්ෂර භාවිතා කරයි. නිදසුනක් ලෙස, අර්ධ අංශ (";") සහ සමාන ("=") වෙන් කර ඇති අක්ෂර බොහෝ විට එම කොටසට අදාළ වන පරාමිති සහ පරාමිති අගයන් සීමා කිරීමට භාවිතා කරයි. කොමාව (",") වෙන් කර ඇති අක්‍ෂරය බොහෝ විට සමාන අරමුණු සඳහා භාවිතා කරයි. උදාහරණයක් ලෙස, එක් යූආර්අයි නිෂ්පාදකයෙක් "නම" හි 1.1 අනුවාදය වෙත යොමු දැක්වීමට "නම; v = 1.1" වැනි කොටසක් භාවිතා කළ හැකි අතර තවත් අයෙකු "නම, 1.1" වැනි කොටසක් භාවිතා කිරීමට භාවිතා කරයි. පරාමිති වර්ග යෝජනා ක්‍රම-විශේෂිත අර්ථ නිරූපණයන් මගින් අර්ථ දැක්විය හැකිය,


1
මම ඇත්ත වශයෙන්ම මඳක් ස්පර්ශ වී ඇති. පිළිතුරේ පැහැදිලි බව සඳහා මම "tl; dr" එකක් එකතු කළෙමි.
exhuma

මම දැන් එය සංස්කරණය කළේ RFC2616 වෙනුවට RFC7231 යොමු කිරීම සඳහා ය (එය කලක සිට යල්පැන ඇති). යාවත්කාලීන කළ සබැඳි හැරුණු විට මෙම පිළිතුර සඳහා ඇති ප්‍රධාන වෙනස "PUT" කොටසේ ය.
exhuma

මම සිතුවේ PUT හසුරුවනු ලැබුවේ POST ට වඩා වෙනස් ආකාරයකට බැවින් එය අනර්ථකාරී විය යුතුද? stackoverflow.com/questions/611906/…
rogerdpack

1
@rogerdpack ඔබ වැරදියි. ඔබ දෙවන ඡේදය කියවා නම් PUTකොටස, ඔබ එය බව පෙනෙනු ඇත වේ idempotent. POSTඊට වෙනස්ව - අර්ථ දැක්වීම අනුව - විය නොහැක. POSTසෑම විටම නව සම්පතක් නිර්මාණය කරයි. PUTසමාන සම්පතක් තිබේ නම් එය ප්‍රතිස්ථාපනය කරයි. එබැවින් ඔබ POST10 වතාවක් අමතන්නේ නම්, ඔබ සම්පත් 10 ක් නිර්මාණය කරනු ඇත. ඔබ PUT10 වතාවක් අමතන්නේ නම්, එය (සමහර විට) එකක් පමණක් නිර්මාණය කරයි. එය ඔබේ ප්‍රශ්නයට පිළිතුරු දෙයිද?
exhuma

61

ඔබට එය බ්‍රව්සර් URL තීරුවේ කෙලින්ම ටයිප් කළ නොහැක.

උදාහරණයක් ලෙස සජීවී HTTP ශීර්ෂ සමඟ අන්තර්ජාලය තුළ POST දත්ත යවන ආකාරය ඔබට දැක ගත හැකිය . ප්‍රති ult ලය එවැනි දෙයක් වනු ඇත

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.
හිපෝ

Ipp හිපෝ යනු නව රේඛීය චරිතයක් විය යුතුද?
vikingsteve

@vikingsteve ඔබ අදහස් කරන දේ මට පෙනේ. එබැවින් අන්තර්ගතය අවසානයේ නව රේඛාවක් ඇති බව මම අනුමාන කරමි.
හිපෝ

2
ශීර්ෂකය අමතර නව
රේඛාවක්

25

POST ඉල්ලීමක පෙරනිමි මාධ්‍ය වර්ගය වේ application/x-www-form-urlencoded. මෙය යතුරු අගය යුගල කේතනය කිරීමේ ආකෘතියකි. යතුරු අනුපිටපත් කළ හැකිය. සෑම යතුරු අගය යුගලයක්ම &අක්‍ෂරයකින් වෙන් කර ඇති අතර සෑම යතුරක්ම එහි වටිනාකමෙන් =අක්ෂරයකින් වෙන් කරනු ලැබේ .

උදාහරණයක් වශයෙන්:

Name: John Smith
Grade: 19

කේතනය කර ඇත්තේ:

Name=John+Smith&Grade=19

මෙය HTTP ශීර්ෂයන්ට පසුව ඉල්ලීම් ශරීරයේ තබා ඇත.


1
අපි HTTPBody හි තබන දේ ඔබ පැහැදිලි කළා, නමුත් අපි HTTPHeader හි ස්ථානගත කරන්නේ / ලියන්නේ කුමක්ද?
මී පැණි

යතුර අනුපිටපතක් විය හැකි බව ඔබ සඳහන් කළා, එසේ නම් එවැනි අනුපිටපතක ප්‍රති come ලය කුමක්ද? අන්තිම එක ස්වයංක්‍රීයව පෙර අගය (ය) නැවත ලියයිද? ස්තූතියි.
ජිංහුයි නියු

Ing ජිංහුයිනියු යතුර අනුපිටපත් නම් එය අරාව ලෙස විග්‍රහ කළ යුතුය. මෙය ඉතා ප්‍රමාද නමුත් වෙනත් කෙනෙකුට උදව් විය හැකිය.
හනාෂ් යස්ලෙම්

19

සමහර වෙබ් සේවා ඔබට ඉල්ලීම් දත්ත සහ පාර-දත්ත වෙන වෙනම තැබීමට අවශ්‍ය වේ . උදාහරණයක් ලෙස දුරස්ථ ශ්‍රිතයක් මඟින් අත්සන් කරන ලද පාර-දත්ත නූල යූආර්අයි හි ඇතුළත් කර ඇතැයි අපේක්ෂා කළ හැකි අතර දත්ත එච්ටීටීපී-ශරීරයක පළ කරනු ලැබේ.

POST ඉල්ලීම අර්ථ නිරූපණය ලෙස පෙනේ:

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වෙබ් සේවාදායකයක් සඳහා “විග්‍රහ කිරීමේ උපදෙස්” එකක් භාවිතා කරමින් QueryString සහ Body-Post තාර්කිකව ඒකාබද්ධ කරයි .

කරුණාකර සටහන් කරන්න: HTTP / 1.1 වම් පසින් (අවකාශය) සහ දකුණු පසින් (රේඛීය සංග්‍රහය) ඔතා ඇත .#32#10


අතර වෙනස /user/johnහා /?user=johnසාධාරණ බලාපොරොත්තු වූ පරිදි මා මෙම එසේ හුදෙක් අර්ථ විචාර එක් (HTTP ඇත්තටම විමසුම නූල් විශේෂ ප්රතිකාර ලබා දෙන්නේ නැත) වේ. නමුත් "වම්පස අවකාශයෙන් ඔතා" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද? HTTP ක්‍රමයට පෙර අවකාශ නොමැත. ඔබ අදහස් කරන්නේ පශ්චාත් ශරීරය සඳහා හිස් රේඛාවද?
කැමිලෝ මාටින්

ඉහත කේතය අතර ...Ym04සහ අතර ඉඩක් (ASCII # 32) HTTP/1.1ඇත. එබැවින් QueryString ක්‍රියා පදය සහ ප්‍රොටෝකෝලය අනුවාදය අතර වාසය කරයි.
අතුරු මුහුණත නොදන්නා

1
ඔබගේ සටහන එය අනපේක්ෂිත හා අනුවාද-විශේෂිත දෙයක් ලෙස පෙනේ. ඉතා අවංකව පෙනෙන පරිදි එහි ඉඩක් ඇති බව පෙනේ. රේඛීය සංග්‍රහය අනෙක් සෑම පේළියකටම අදාළ වේ.
කැමිලෝ මාටින්

1
කේතයෙන් සලකුණු කළ නොහැකි දේ මම අවධාරණය කළෙමි. එය පැහැදිලිව පෙනෙන නමුත් සමහර විට එසේ නොවේ.
අතුරු මුහුණත නොදන්නා

යූආර්අයි සහ පරාමිතීන් ?අප GETඉල්ලීම් සමඟ කරන ආකාරයට වෙන් කිරීමෙන් අපට URL හි කොටසක් ලෙස විමසුම් පරාමිතීන් සමත් විය හැකි බව සත්‍යයකි .
අසයි

18

HTTP POSTs හි ආකෘති අගයන් ඉල්ලීම් ශරීරය තුළට යවනු ලැබේ.

වැඩි විස්තර සඳහා පිරිවිතර බලන්න .


5
"එකම ආකෘතිය" ටිකක් අපැහැදිලි ය. ඒවා ?උදාහරණයක් ලෙස ආරම්භ වේද?
කැමිලෝ මාටින්

7
EtPeterWooster ඔව්, නමුත් උදාහරණයක් සපයන්නේ නැත. මේ සම්බන්ධයෙන්, "බලන්න, ඔබගේ ප්‍රශ්නයට පිළිතුරක් යෙදුමේ බ්ලොග් අඩවියේ ඇත (සබැඳිය) ".
කැමිලෝ මාටින්

36
EtPeterWooster එය අවශ්‍ය නොවේ, නමුත් ඔබට යමක් අමතක වූ විට එය ඉතා හොඳය, එය ගූගල් කරන්න, SO වන පළමු සබැඳිය වෙත යන්න, සහ පැහැදිලි, සංක්ෂිප්ත උදාහරණයක් තිබේ, එය ඔබට හපන්නට යැවීම වෙනුවට ඔබට අවශ්‍ය දේ කියයි. විස්තීර්ණ වුවද, නැවුම් කරන්නන් සඳහා නුසුදුසු විය හැකි අධික ලෙස සවිස්තරාත්මක පිරිවිතර. මේ ගැන සිතා බලන්න: මෙම වෙබ් අඩවියේ ඇති බොහෝ QAs "පිරිවිතර / අත්පොත / API / යනාදිය (සබැඳිය) කියවීමට යන්න ". එය ප්‍රයෝජනවත් වේද? ගූගල් වලට වඩා වැඩි නොවේ.
කැමිලෝ මාටින්

2
අන්තර්ගත වර්ගය නම් පමණක් application/x-www-form-urlencodedවන අතර එය සැමවිටම එසේ නොවේ.
ගුෆා

3
GET විමසුම් දාමයේ ආකෘතිය යෙදුමට වඩා වෙනස් වේ / x-www-form-urlencoded. උදාහරණයක් ලෙස, සුදු අවකාශය වෙනස් ආකාරයකින් කේතනය කර ඇත (% 20 vs +). පිළිතුර මේ සම්බන්ධයෙන් නොමඟ යවන සුළුය.
ᄂ ᄀ

8

පළමුවෙන්ම, GETසහ අතර වෙනස හඳුනා ගනිමුPOST

ලබා ගන්න: එය ප්රකෘතිය වේ HTTPසේවාදායකය වෙත ඉදිරිපත් කරන අතර පසුව එන බව සේවාදායකය හා විමසුම් string සිට දත්ත ලබා ගැනීමට භාවිතා කරයි, එම ඉල්ලීම් ?තුළ URIසුවිශේෂී සම්පත් ලබා ගැනීමට භාවිතා කරයි.

මෙය ආකෘතියයි

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

මෙන්න data=valueවිමසුම් නූල් අගය සම්මත කර ඇත.

POST: සේවාදායකයට ආරක්ෂිතව දත්ත යැවීමට එය භාවිතා කරයි, එබැවින් අවශ්‍ය ඕනෑම දෙයක්, මෙය 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 ඉක්මවා තැපැල් කරන්නේ ඇයි?

දී GETඇති සේවාදායක සාමාන්යයෙන් විමසුම string පාදක URL එක වෙත ඇත්තා වූ ද, වී යවන වටිනාකම, දැන් මේ 2 ප්රතිවිපාක තියෙනවා

  • මෙම GETඉල්ලීම් පරාමිතීන් හා සමග බ්රවුසරයේ ඉතිහාසය සුරැකෙයි. එබැවින් ඔබගේ මුරපද බ්‍රව්සර් ඉතිහාසයේ සංකේතනය කර නොමැත. මෙය අතීතයේ දී ෆේස්බුක් සඳහා සැබෑ ගැටළුවක් විය.
  • සාමාන්‍යයෙන් සේවාදායකයන්ට කොපමණ කාලයක් URIපැවතිය හැකිද යන්නට සීමාවක් ඇත. බොහෝ පරාමිතීන් යවා ඇත්නම් ඔබට ලැබෙනු ඇත414 Error - URI too long

තැපැල් ඉල්ලීමකදී ක්ෂේත්‍ර වලින් ඔබේ දත්ත ඒ වෙනුවට ශරීරයට එකතු වේ. ඉල්ලීම් පරාමිතීන්ගේ දිග ගණනය කරනු ලබන අතර අන්තර්ගතයේ දිග සඳහා ශීර්ෂයට එකතු කරනු ලබන අතර වැදගත් දත්ත කිසිවක් URL වෙත සෘජුවම එකතු නොවේ.

සේවාදායකයින්ට ඉල්ලීම් කරන්නේ කෙසේද යන්න පිළිබඳ මූලික තොරතුරු බැලීමට ඔබට ගූගල් සංවර්ධක මෙවලම් ජාල අංශය භාවිතා කළ හැකිය.

ඔබ නිතරම වැඩි වටිනාකම් ඔබේ එක් කළ හැකිය Request Headersවැනි Cache-Control, Origin, Accept.


4
ආරක්ෂාව පිළිබඳ උපකල්පන සත්‍ය වන්නේ HTTPSසම්බන්ධතාවයේ සන්දර්භය තුළ පමණි HTTP. (විමසුම් පරාමිතීන් ඇතුළුව) සහ සංකේතාංකනය කරන විට / ආරක්ෂා නොකරන විට HTTPSදෙකම සංකේතනය කරයි. විස්තර කර ඇති ගැටළුව බොහෝ බ්‍රව්සර් ඔවුන්ගේ ඉතිහාස දත්ත ගබඩාවල (ඇතුළුව ) ගබඩා කර තිබීම (සාමාන්‍යයෙන් සංකේතනය කර නැත). එබැවින්, සංවේදී ඕනෑම දෙයකට + පමණක් භාවිතා කරන්න . URLRequest BodyHTTPURIsURLsRequest BodyHTTPS
පෙට්රු සහරියා

EtPetruZaharia ඔබේ පැහැදිලි කිරීම සමඟ මම එකඟ වෙමි. ඔබට මෙය සංස්කරණය ලෙස යෝජනා කළ හැකි අතර මම පිළිගැනීමට සතුටු වෙමි! :)
සීෂාන් ආදිල්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.