問題タブ [xmlhttprequest-level2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - http://localhost CORS オリジンが機能しないのはなぜですか?
サーバー(nginx/node.js)に適切なヘッダーを設定しても、このCORSの問題に悩まされています。
Chrome ネットワーク ペインで確認できます -> 応答ヘッダー:
これでうまくいくはずです。
テストに使用するコードは次のとおりです。
私は得る
XMLHttpRequest はhttp://stackoverflow.com/を読み込めません。オリジンhttp://localhostは Access-Control-Allow-Origin で許可されていません。
サーバー構成ではなく、クライアントスクリプトに問題があると思われます...
javascript - すべての XHR2 送信呼び出しが終了するのを待つ方法
プログレスバーも表示しながら、ブラウザからサーバーに複数のファイルをアップロードするコードをいくつか実行しました。XHR2 送信呼び出しは非同期です。問題は、すべての XHR2 送信呼び出しが終了した後で、いくつかの関数を呼び出したいことです。
これは私のコードの非常に単純化されたスニペットです:
「onreadystatechange: ファイルがアップロードされました。」コンソールに出力され、ファイルの 1 つがアップロードされていることがわかります。しかし、「すべてのファイルがアップロードされました」というコードを書くことができません。
助けてくれてありがとう。 jqueryを使用したソリューションがある場合に備えて、jqueryも使用しています。
javascript - Opera で Javascript から 8 ビットのバイナリ データにアクセスするにはどうすればよいですか?
この質問は、 IE に関するこの StackOverflow の質問を Opera 12 ブラウザーに拡張したものです。
根本的な問題は、kmz (圧縮された kml) ファイルを処理する geoxml3の問題です。
バイナリ データは、変更されたバージョンの ZipFile.complete.js でTypedArrays を使用して処理されています。
バイナリ ファイルが転送された後、Uint8Array は Opera 12 で正しく設定されず、あたかもデータが 16 ビット要素としてインポートされているかのようになります。
リクエストは次のように構成されます。
返される値は次のように処理されます。
最初の 8 バイトは、Opera 12 では次のように入力されます。
0x004B0050; 4915280 の 10 進値を与える
ただし、次のようにする必要があります。
0x4034B50; 67324752 の 10 進数値。
これは、Firefox、Chrome、および IE で正しく機能します (回避策あり)。
Uint8Array を正しく設定するように Opera 12 を説得する方法を知っている人はいますか? または、それが機能するようにするための回避策(16ビットバイトの配列を8ビットバイトの配列に変換し、不要な上位8ビットをできるだけ効率的に破棄する方法)?これは Opera 12 の TypedArray/XmlHttpRequest の最近の実装における既知のバグですか?
php - xmlHTTPrequest send() の後に PHP $_POST から ArrayBuffer にアクセスする
私は XMLHttpRequest 2 の授業に従っています:
https://developer.mozilla.org/en/DOM/XMLHttpRequest/Sending_and_Recoming_Binary_Data および http://www.html5rocks.com/en/tutorials/file/xhr2/#toc-send-arraybuffer
これらはクライアント側の優れたチュートリアルであり、これが私のスクリプトからの実際の抜粋です。
// 画像データでクールなことをする
ここまでは順調で、クライアントとサーバーの両方のコントロール パネルから、大量のデータが転送されていることがわかります。
ここに私の問題があります:サーバーでPHPを使用してArrayBufferにアクセスするにはどうすればよいですか? HTML フォームからパラメーターを渡す $_POST スーパーグローバルに慣れているので、配列としてアクセスできますが、このバイナリ配列にアクセスして MySQL データベースに貼り付ける方法についての参照が見つかりません。
http - HTTP範囲リクエストの最適な長さは?
複数の HTTP 範囲要求によって大きなファイルを取得する JavaScript ダウンローダーがあります。
終わりがある間
ファイル内の特定のオフセットを取得する必要があるため (複数の HTTP サーバーからのダウンロードを考えてください)、範囲要求は必須です。ダウンローダがこの方法を使用して ~100MB のファイルをダウンロードしようとしている場合、良好なスループットを得るための最適な長さはどれくらいですか?
php - XMLHttprequest でファイルをアップロードする - multipart/form-data に境界がありません
XMLHttprequest でファイルをアップロードしています。ファイルをアップロードするJS関数は次のとおりです。
サーバー側では、upload.phpで次のようにファイルを読み取ります。
PHP 警告が表示されることを除いて、すべて正常に動作します。
Missing boundary in multipart/form-data POST data in Unknown on line 0
.
この行を削除すると
xhr.setRequestHeader("Content-Type", "multipart/form-data");
、警告が消えます。
ここで何が問題になるはずですか?
ajax - Firefox は、*download* が完了すると、XMLHttpRequest アップロードの load および loadend イベントのみを発生させます
他の誰かがこれを確認できますか、それとも私は何か間違っていますか?
Firefox では、XMLHttpRequest アップロード イベント load および loadend は、アップロードが完了したときではなく、ダウンロードが完了したときにのみ発生します。また、アップロードの最後に進行状況イベントが発生しません。
この例を参照してください: http://geo.kitten-x.com/testupload.html
プログレス バーが 100% に達し、load イベントと loadend イベントが発生し、スクリプトが終了すると結果がポストされるという点で、Chrome は正しく動作すると思います。Firefox では、load イベントと loadend イベントは、スクリプトが終了した後にのみ発生します。
ios - iOS 6 (iPhone/iPad) NTLM/Windows 認証による画像アップロード "Request Body Stream Exhausted"
私は、iOS 6 で XMLHttpRequest POST を使用して画像をアップロードできるように取り組んでいます。これはデスクトップおよび Android の Web ブラウザーで動作しますが、iOS 6 では、投稿先のページで「Request Body Stream Exhausted」というエラーが発生します。(Safari Web インスペクターで iOS シミュレーターを使用)。
ページの基本的なコードは次のとおりです。
他のブラウザーでこれを行うと、ハンドラーは正しく戻り、ファイルをアップロードします。ただし、iOS では、ashx ページに「リクエスト ボディ ストリームが使い果たされました」というエラーが表示されます。
インスペクターのスクリーンショットは次のとおりです。
何か案は?
更新:この問題は、IIS でアプリケーションに対して NTLM/Windows 認証が有効になっている場合にのみ発生します。フォームまたは匿名認証を使用すると、アップロードは正常に機能します。
ありがとう、
ジョン
websocket - 私のシナリオに基づいて、WebSocketまたはXmlHttpRequest、あるいはその両方を使用する必要がありますか?
モンキー言語(クロスプラットフォームトランスレーター)でターン制のゲームを作ろうとしています。ゲームはHTML5プラットフォームを使用します。このゲームはオンラインでプレイされ、プレイヤーはお互いに対戦できます(2対2の対戦の場合もあります)。私は最近たくさんの解決策を検討しました、そして私はそれらのうちの2つに立ち寄りました。古き良きXmlHttpRequestと新しいWebSocketは、かなり良いW3Cからの推奨状態にあるようです。私が興味を持ったもう1つのテクノロジーは、プッシュサービスであるPubNubです。このサービスは実際に接続されているすべてのクライアントにメッセージをプッシュし、非常に高速です。しかし、これは後でコストがかかり、送信するメッセージの数に制限があります。つまり、1000の接続と100万のメッセージで月額15ドルかかり、さらに100万のメッセージで+ 1ドルかかり、続行します。実際には3人の俳優がいます サルで書かれたクライアント(HTML5)C#で書かれたサーバー。メッセージをブロードキャストするための言語とPubNubをよく知っているからです。クライアントはサーバーにのみリクエストを送信し、サーバーはメッセージをPubNubに中継し、PubNubはクライアントに送り返します。私はそれらの事実を考慮して頭の中で2つの計画を持っていました:
- ゲームはHTML5で書かれていますが、他の言語(例としてAndroid)に移植することもできます。WebSocketを使用している場合、これを処理するために追加のライブラリを取得する必要があり、それにもっと時間を費やしたくないので、それを行うことはできません。だから私は今のところHTML5に焦点を合わせますが、それを移植することは常にオプションです。
- ターン制のゲームなので、XmlHttpRequestはこのタスクに適しているようですが、どの時点でですか?1000を超える接続があり、リクエストを送信している場合、それをサポートできますか?各ターンは一意のリクエストですが、チャットメッセージもリクエストとプライベートメッセージであり、プレーヤーデータも取得します(ゲームに参加する前に)。WebSocketよりも優れている点は、Http Getの作成が簡単で、多くのプラットフォームで簡単にサポートされることです。だから、これを選択すれば、明らかにAndroidルートに行くことができます。
- ここに記載されているテクノロジー以外のテクノロジーに多くの時間を投資したくありません。
- PubNubは最終的にはお金がかかりますが、メッセージをプッシュするのに非常に効率的であるため、PubNubを使用しないとリスクが高くなり、コードをリレーするメッセージを自分で実行する必要があります。
だからここに私の4つの計画。
- WebSocketを使用して、AlchemyをC#用のWebSocketServerとして使用します。これは、テストしてすばらしい動作をし、メッセージを中継するためのバックエンドにPubNubアクターがあります。
- XmlHttpRequestsを使用して、リクエストゲートウェイに単純なWebAPIを使用します。
- 両方で行きます。選択するテクノロジーに応じてクライアントを独立させます。フォールバックとしてXmlHttpRequestを使用し、サーバーが両方の接続をサポートするようにします。PubNubは、ここでも中継アクターであり、すべてを通信させる必要があります。
- WebSocketを使用しますが、PubNubは使用しません。
それで、あなたは私に行くように勧めるルートとその理由を教えてください。
ありがとう!
java - XmlHttpRequestレベル2:応答は何も返しません
私はこの問題を抱えています、私は昨日すでにこの質問をしました、しかし私は何の答えもありませんでした... :(
私はクライアント側にこのコードを持っています:
これまでのところ、それは公平に思えます。サーブレットには、次のコードがあります。
問題は、
私が期待するものを印刷しますが、
何も返しません。実際、アラートは空です。
誰かが私に理由を説明できますか?