以下の jQuery ajax() 呼び出しを使用しても機能しません。beforeSend
パラメータを削除すると、正常に動作します。Chrome の Web インスペクターによると、動作していないときのステータスは "Load Cancelled" です。jQuery 1.7.2 および 1.9.1、Chrome、Safari、Firefox でテスト済み。入力したパラメーターに関係なく失敗しますsetRequestHeader
(たとえば、 "test" 、 "true" も失敗します)。私beforeSend
が含めると、リクエストヘッダーに次のものが含まれます: Access-Control-Request-Headers:accept, cache-control, origin
.それが重要な場合api_url
は、別のサブドメインにありますが、サーバーに CORS を設定して、他のすべてのインスタンスで正常に動作するようにします。Cache-Control ヘッダーを設定する必要があるため、Send の前に削除することはできません。
$.ajax({
url: api_url,
beforeSend : function (xhr){xhr.setRequestHeader('Cache-Control', "public");} ,
dataType: "json",
success: successCallback,
error: APIError
});
update : ステータスとして 200 で応答するため、node.js サーバーに到達しているようです。サーバーがヘッダーにどのように応答しているかに問題がある可能性はありますか? 繰り返しますが、使用するキー/値パラメーターに関係なくこれを行うため、キャッシュに関連することはありません。
update2 : コンソールで、「リクエスト ヘッダー フィールド Cache-Control は Access-Control-Allow-Headers では許可されていません」というメッセージが表示されます。私はそれをグーグルで試しましたが、答えには近づいていません。リクエストヘッダーフィールドが受け入れられないようです。これは、ヘッダーを受け入れるように node.js を構成する必要があるということですか?