私はCORSを理解していると思ったが、明らかにわからないことがある。私はlocalhostから実行しようとしているアプリがあります。このアプリはAzure SearchへのリクエストをPOSTする必要があります。私は検索文書をアップロードしようとしています。これを実行しようとする試みで、私は次のようしている: jQuery Ajax - POSTからLocalhostが生成されない 'Access-Control-Allow-Origin'ヘッダ
var url = 'https://my-app.search.windows.net/indexes/test/docs/index?api-version=2015-02-28';
$.ajax({
url: url,
type: 'POST',
contentType:'application/json',
headers: {
'api-key':'XXXXXX',
'Content-Type':'application/json'
},
beforeSend: function (req) {
req.setRequestHeader('Access-Control-Allow-Origin', '*');
},
data: JSON.stringify({
'@search.action':'upload',
'id': '1',
'name': 'some name'
}),
success: function() { alert('success'); },
error: function() { alert('check the console window.'); }
});
は確かに、
url
と
api-key
は本物ではありません。 POSTmanを使用していれば、このデータを正常にPOSTできます。
Failed to load resource: the server responded with a status of 403 (Forbidden)
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:72' is therefore not allowed access. The response had HTTP status code 403.
を私は "に設定私のAzureの検索サービスの「可原点タイプ」CORSのオプションを持っている:私はjQueryを介して、私のアプリからそれを投稿しようとすると、しかし、私は言うコンソールウィンドウでエラーが出ますすべて"。だから、基本的に、その広いオープン。しかし、私はまだこのCORSエラーを取得します。
localhostのjQueryからこのサービスにデータをPOSTするにはどうすればよいですか?
私には、403(禁止された)応答が本物の鍵だと思われます。 CORSをサポートしていないエラーページにリダイレクトされている可能性があります。 'api-key'が正しいと確信していますか?ブラウザの* Network *コンソールで送信されたリクエストヘッダを確認してください。 – Phil
クライアントに 'Access-Control-Allow-Origin'ヘッダを設定するのは意味がありません。すべての 'Access-Control-Allow-XXX'ヘッダは、サーバの単独責任です。 –
@Phil - 私は 'api-key'が正しいと確信しています。実際には、私は同じサービス上の他のエンドポイントにヒットするために使用しています。私が使用しているキーは主な管理キーなので、すべての特権が必要です。 – user687554