同期 XHR の廃止

Eric Bidelman 氏

ご案内: XMLHttpRequest2 仕様が最近変更され、XMLHttpRequest.responseType が設定されている場合に同期リクエストの送信が禁止されました。この変更の背後にある考え方は、可能な限り同期 xhr の使用をこれ以上軽減できるようにすることです。

たとえば、次のコードは、Chrome と FF のデベロッパー チャンネル ビルドで INVALID_ACCESS_ERR をスローするようになりました。

var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('GET', '/', false); // sync request
xhr.send();

WebKit のバグMozilla のバグをご覧ください。

同期 XHR にはさまざまな理由がありますが、MSDN のブログ投稿「Why You should use XMLHttpRequest Aasyncly(XMLHttpRequest を非同期的に使用する理由)」にこの問題についての詳しい説明があります。

一般に、これはウェブにとっては大きな変更ですが、同期動作に依存していた既存のアプリの一部に影響を与える可能性があります。非同期リクエストを使用するには、XHR コードを確認し、できるだけ早く更新してください。