プリフライトとCORSに関する多くの回答を読みました。多くの回答はサーバー視点からのものですが、私はこの場合クライアントです。オリジンヘッダを設定しますか?私の推測では、これは単純なリクエストだと思うのですが、正しいでしょうか?
req.open("POST", url, true);
req.setRequestHeader( 'Content-Type', 'application/blahblah' );
req.setRequestHeader( 'Accept', 'application/blahblah' );
req.setRequestHeader("Authorization", "Basic " + btoa(user + ":" + pass));
req.send();
それでもまだ動作しません:
プリフライトリクエストへのレスポンスがアクセスコントロールチェックを通過しません:リクエストされたリソースに 'Access-Control-Allow-Origin' ヘッダがありません。したがって、Origin 'null'はアクセスを許可されていません。応答はHTTPステータスコード500でした。
これをAPIリクエストに使用する場合、Authorizationヘッダーを追加すると、まずXMLHttpRequestがOPTIONSリクエストを送信することになり、APIによっては拒否される可能性がある。
これを回避するには
var invocation = new XMLHttpRequest();
invocation.open("GET", url, true, username, password);
invocation.withCredentials = true;
これはAuthorizationヘッダを追加し、プリフライトリクエストを回避します。