POST 経由でデータを送信する 4 つの一般的な方法
データを POST 送信する 4 つの一般的な方法
HTTP プロトコルは ASCII コードで送信され、TCP/IP プロトコルに基づくアプリケーション層の仕様であることがわかっています。この仕様では、HTTP リクエストをステータス行、リクエスト ヘッダー、メッセージ本文の 3 つの部分に分割しています。以下に似ています:
<method> <request-url> <version><headers> <entity-body></entity-body></headers></version></request-url></method>
このプロトコルは、POST によって送信されたデータをメッセージ本文 (entity-body) に配置する必要があると規定していますが、データがどのようなエンコード方式を使用する必要があるかはプロトコルで指定されていません。実際、送信される最後の HTTP リクエストが上記の形式を満たしている限り、開発者はメッセージ本文の形式を自分で完全に決定できます。
ただし、データが送信される前に、サーバーがデータを正常に解析できた場合にのみ意味を持ちます。 php、pythonなどの一般的なサーバーサイド言語とそのフレームワークには、一般的なデータ形式を自動的に解析する機能が組み込まれています。サーバーは通常、リクエストのメッセージ本文がリクエスト ヘッダーの Content-Type フィールドに基づいてエンコードされる方法を学習し、本文を解析します。したがって、POST 送信データ スキームには、Content-Type とメッセージ本文のエンコード方式という 2 つの部分が含まれます。正式に紹介を始めましょう。
application/x-www-form-urlencoded
これは、POST 経由でデータを送信する最も一般的な方法です。ブラウザーのネイティブ フォームの場合、enctype 属性が設定されていない場合、データは最終的に application/x-www-form-urlencoded モードで送信されます。リクエストは次のようなものです (この記事では無関係なリクエスト ヘッダーは省略しています):
Content-Type: application/x-www-form-urlencoded;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
まず、Content-Type が application/x-www-form-urlencoded として指定され、次に送信されたデータが key1 に従っています。 =val1&key2= val2 はエンコードされ、key と val は両方とも URL トランスコードされます。ほとんどのサーバーサイド言語は、このメソッドを適切にサポートしています。たとえば、PHP では、$_POST[‘title’] はタイトルの値を取得でき、$_POST[‘sub’] はサブ配列を取得できます。
Ajax を使用してデータを送信するときも、この方法を使用することがよくあります。たとえば、jquery や QWrap の Ajax では、Content-Type のデフォルト値は「application/x-www-form-urlencoded;charset=utf-8」です。
multipart/form-data
これは、もう 1 つの一般的な POST データ送信方法です。フォームを使用してファイルをアップロードする場合、フォームの enctyped はこの値と等しくなければなりません。リクエストの例を直接見てみましょう:
Content-Type:multipart/form-data; boundary=—-WebKitFormBoundaryrGKCBY7qhFd3TrwA ——WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition: form-data; name=”text” title——WebKitFormBoundaryrGKCBY7qhFd3TrwAContent-Disposition: form-data; name=”file”; filename=”chrome.png”Content-Type: image/png PNG … content of chrome.png …——WebKitFormBoundaryrGKCBY7qhFd3TrwA–
この例はもう少し複雑です。まず、テキストの内容との重複を避けるために、異なるフィールドを区切るために境界が生成されます。境界は非常に長く複雑です。次に、Content-Type は、データが mutipart/form-data でエンコードされることと、このリクエストの境界コンテンツが何であるかを指定します。メッセージ本文は、フィールドの数に応じて、同様の構造を持つ複数の部分に分割されます。各部分は –boundary で始まり、その後に内容の説明情報、改行、最後にフィールドの特定の内容 (テキストまたはバイナリ) が続きます。ファイルを転送する場合は、ファイル名とファイル タイプの情報も含める必要があります。メッセージ本文は –boundary– フラグで終わります。 mutipart/form-data の詳細な定義については、rfc1867 を参照してください。
この方法は一般にファイルをアップロードするために使用され、主要なサーバー言語でもこの方法が適切にサポートされています。
上記の POST データの 2 つのメソッドはブラウザーでネイティブにサポートされており、現段階ではネイティブ フォームはこれら 2 つのメソッドのみをサポートしています。しかし、ますます多くの Web サイト、特に WebApp がデータのやり取りに Ajax を使用するようになっているため、新しいデータ送信メソッドを完全に定義して開発の利便性を高めることができます。
application/json
application/json この Content-Type は、応答ヘッダーとして誰もがよく知っています。実際、現在では、メッセージ本文がシリアル化された JSON
stringであることをサーバーに伝えるためのリクエスト ヘッダーとして使用する人が増えています。 JSON 仕様の普及により、IE の下位バージョンを除くすべての主要ブラウザは JSON.stringify をネイティブでサポートしているため、JSON を処理する機能も備えているため、JSON を使用する際に問題は発生しません。 JSON 形式は、キーと値のペアよりもはるかに複雑な構造化データをサポートしていることも便利です。数年前にプロジェクトに取り組んでいたとき、提出する必要のあるデータは非常に深いレベルにあり、データを JSON にシリアル化して提出したことを思い出します。ただし、その時は JSON 文字列を val として使用し、それをキーと値のペアに配置し、x-www-form-urlencoded モードで送信しました。
Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。例如下面这段代码: var data = {‘title':’test’, ‘sub’ : [1,2,3]};$http.post(url, data).success(function(result) { …});
送信される最終リクエストは次のとおりです:
Content-Type: application/json;charset=utf-8 {“title”:”test”,”sub”:[1,2,3]}
このソリューションは、複雑な構造化データを簡単に送信でき、特に RESTful インターフェイスに適しています。 Chrome 独自の開発者ツール、Firebug、Fiddler などの主要なパケット キャプチャ ツールは、JSON データをツリー構造で表示するため、非常に使いやすいです。ただし、一部のサーバー側言語はまだこのメソッドをサポートしていません。たとえば、php は $_POST オブジェクトを通じて上記のリクエストからコンテンツを取得できません。このとき、リクエストヘッダーの Content-Type が application/json の場合、
php://input から元の入力ストリームを取得し、json_decode してオブジェクトに変換する必要があります。一部の PHP フレームワークはすでにこれを開始しています。
当然 AngularJS 也可以配置为使用 x-www-form-urlencoded 方式提交数据。如有需要,可以参考这篇文章。
text/xml
我的博客之前提到过 XML-RPC(XML Remote Procedure Call)。它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的:
Content-Type: text/xml <!–?xml version=”1.0″?–><methodcall> <methodname>examples.getStateName</methodname> <params> <param> <value><i4>41</i4></value> </params></methodcall>
XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 WordPress 的 XML-RPC Api,搜索引擎的 ping 服务等等。JavaScript 中,也有现成的库支持以这种方式进行数据交互,能很好的支持已有的 XML-RPC 服务。不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。
以上がPOST 経由でデータを送信する 4 つの一般的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









DDREASE は、ハード ドライブ、SSD、RAM ディスク、CD、DVD、USB ストレージ デバイスなどのファイル デバイスまたはブロック デバイスからデータを回復するためのツールです。あるブロック デバイスから別のブロック デバイスにデータをコピーし、破損したデータ ブロックを残して正常なデータ ブロックのみを移動します。 ddreasue は、回復操作中に干渉を必要としないため、完全に自動化された強力な回復ツールです。さらに、ddasue マップ ファイルのおかげでいつでも停止および再開できます。 DDREASE のその他の主要な機能は次のとおりです。 リカバリされたデータは上書きされませんが、反復リカバリの場合にギャップが埋められます。ただし、ツールに明示的に指示されている場合は切り詰めることができます。複数のファイルまたはブロックから単一のファイルにデータを復元します

0.この記事は何をするのですか?私たちは、多用途かつ高速な最先端の生成単眼深度推定モデルである DepthFM を提案します。従来の深度推定タスクに加えて、DepthFM は深度修復などの下流タスクでも最先端の機能を実証します。 DepthFM は効率的で、いくつかの推論ステップ内で深度マップを合成できます。この作品について一緒に読みましょう〜 1. 論文情報タイトル: DepthFM: FastMonocularDepthEstimationwithFlowMatching 著者: MingGui、JohannesS.Fischer、UlrichPrestel、PingchuanMa、Dmytr

Google が推進する JAX のパフォーマンスは、最近のベンチマーク テストで Pytorch や TensorFlow のパフォーマンスを上回り、7 つの指標で 1 位にランクされました。また、テストは最高の JAX パフォーマンスを備えた TPU では行われませんでした。ただし、開発者の間では、依然として Tensorflow よりも Pytorch の方が人気があります。しかし、将来的には、おそらくより大規模なモデルが JAX プラットフォームに基づいてトレーニングされ、実行されるようになるでしょう。モデル 最近、Keras チームは、ネイティブ PyTorch 実装を使用して 3 つのバックエンド (TensorFlow、JAX、PyTorch) をベンチマークし、TensorFlow を使用して Keras2 をベンチマークしました。まず、主流のセットを選択します

iPhone のモバイル データ接続に遅延や遅い問題が発生していませんか?通常、携帯電話の携帯インターネットの強度は、地域、携帯ネットワークの種類、ローミングの種類などのいくつかの要因によって異なります。より高速で信頼性の高いセルラー インターネット接続を実現するためにできることがいくつかあります。解決策 1 – iPhone を強制的に再起動する 場合によっては、デバイスを強制的に再起動すると、携帯電話接続を含む多くの機能がリセットされるだけです。ステップ 1 – 音量を上げるキーを 1 回押して放します。次に、音量小キーを押して、もう一度放します。ステップ 2 – プロセスの次の部分は、右側のボタンを押し続けることです。 iPhone の再起動が完了するまで待ちます。セルラーデータを有効にし、ネットワーク速度を確認します。もう一度確認してください 修正 2 – データ モードを変更する 5G はより優れたネットワーク速度を提供しますが、信号が弱い場合はより適切に機能します

世界は狂ったように大きなモデルを構築していますが、インターネット上のデータだけではまったく不十分です。このトレーニング モデルは「ハンガー ゲーム」のようであり、世界中の AI 研究者は、データを貪欲に食べる人たちにどのように餌を与えるかを心配しています。この問題は、マルチモーダル タスクで特に顕著です。何もできなかった当時、中国人民大学学部のスタートアップチームは、独自の新しいモデルを使用して、中国で初めて「モデル生成データフィード自体」を実現しました。さらに、これは理解側と生成側の 2 つの側面からのアプローチであり、両方の側で高品質のマルチモーダルな新しいデータを生成し、モデル自体にデータのフィードバックを提供できます。モデルとは何ですか? Awaker 1.0 は、中関村フォーラムに登場したばかりの大型マルチモーダル モデルです。チームは誰ですか?ソフォンエンジン。人民大学ヒルハウス人工知能大学院の博士課程学生、ガオ・イージャオ氏によって設立されました。

最近、軍事界は、米軍戦闘機が AI を使用して完全自動空戦を完了できるようになったというニュースに圧倒されました。そう、つい最近、米軍のAI戦闘機が初めて公開され、その謎が明らかになりました。この戦闘機の正式名称は可変安定性飛行シミュレーター試験機(VISTA)で、アメリカ空軍長官が自ら飛行させ、一対一の空戦をシミュレートした。 5 月 2 日、フランク ケンダル米国空軍長官は X-62AVISTA でエドワーズ空軍基地を離陸しました。1 時間の飛行中、すべての飛行動作が AI によって自律的に完了されたことに注目してください。ケンダル氏は「過去数十年にわたり、私たちは自律型空対空戦闘の無限の可能性について考えてきたが、それは常に手の届かないものだと思われてきた」と語った。しかし今では、

今週、OpenAI、Microsoft、Bezos、Nvidiaが投資するロボット企業FigureAIは、7億ドル近くの資金調達を受け、来年中に自立歩行できる人型ロボットを開発する計画であると発表した。そしてテスラのオプティマスプライムには繰り返し良い知らせが届いている。今年が人型ロボットが爆発的に普及する年になることを疑う人はいないだろう。カナダに拠点を置くロボット企業 SanctuaryAI は、最近新しい人型ロボット Phoenix をリリースしました。当局者らは、多くのタスクを人間と同じ速度で自律的に完了できると主張している。人間のスピードでタスクを自律的に完了できる世界初のロボットである Pheonix は、各オブジェクトを優しくつかみ、動かし、左右にエレガントに配置することができます。自律的に物体を識別できる

マルチモーダル文書理解機能のための新しい SOTA!アリババの mPLUG チームは、最新のオープンソース作品 mPLUG-DocOwl1.5 をリリースしました。これは、高解像度の画像テキスト認識、一般的な文書構造の理解、指示の遵守、外部知識の導入という 4 つの主要な課題に対処するための一連のソリューションを提案しています。さっそく、その効果を見てみましょう。複雑な構造のグラフをワンクリックで認識しMarkdown形式に変換:さまざまなスタイルのグラフが利用可能:より詳細な文字認識や位置決めも簡単に対応:文書理解の詳しい説明も可能:ご存知「文書理解」 「」は現在、大規模な言語モデルの実装にとって重要なシナリオです。市場には文書の読み取りを支援する多くの製品が存在します。その中には、主にテキスト認識に OCR システムを使用し、テキスト処理に LLM と連携する製品もあります。
