ここからのサンプルによると:
リクエストが GET、HEAD、または POST 以外のメソッドを使用する場合。また、POST を使用して、application/x-www-form-urlencoded、multipart/form-data、または text/plain 以外の Content-Type を持つリクエスト データを送信する場合 (たとえば、POST リクエストが XML ペイロードをサーバーに送信する場合) application/xml または text/xml を使用すると、リクエストはプリフライトされます。
したがって、次の例では、XML Content-Type とカスタム ヘッダーにより、プリフライトが実行されますX-PINGOTHER
。
var invocation = new XMLHttpRequest();
var url = 'http://bar.other/resources/post-here/';
var body = '<?xml version="1.0"?><person><name>Arun</name></person>';
function callOtherDomain(){
if(invocation)
{
invocation.open('POST', url, true);
invocation.setRequestHeader('X-PINGOTHER', 'pingpong'); //<====
invocation.setRequestHeader('Content-Type', 'application/xml'); //<====
invocation.onreadystatechange = handler;
invocation.send(body);
}
}
しかし、いわゆるプリフライト OPTIONS リクエスト (以下) では、サーバーは HTTP メソッドとカスタム ヘッダーのみを通知されます。誰もサーバーに について話しませんでしたXML Content-Type
。
論理的には、プリフライト リクエストが送信される限り、Content-Typeがプリフライトを必要としない 3 つの形式ではないことを意味します。しかし、他にも多くの可能性があります。肝心なのは、サーバーはプリフライト要求が送信された理由を認識できる必要があるということです。
では、パズルのピース (コンテンツ タイプ) が欠けている状態で、サーバーがこの要求を許可するかどうかを合理的に決定するにはどうすればよいでしょうか?