2

初めてAWSとs3を使用するときは、ファイルをアップロードしようとするとエラーが発生するため、大きなファイルをアップロードするためにセールスフォースと統合する必要があります

OPTIONS https://s3.amazonaws.com/ritesh 403 (Forbidden) resumable.js:344
XMLHttpRequest cannot load https://s3.amazonaws.com/ritesh. Origin https://c.ap1.visual.force.com is not allowed by Access-Control-Allow-Origin.

ご覧のとおり、resumable.js(大きなファイルをチャンクで送信するためのJavaScriptライブラリ)を使用しています。URLhttps ://c.ap1.visual.force.com からファイルを送信しているので、送信しようとしました。

私がファイルを送信しているところからのコードセグメントは

var r = new Resumable({
            target:'https://s3.amazonaws.com/ritesh',
            chunkSize:1*1024*1024,
            simultaneousUploads:4,
            testChunks:false,
            throttleProgressCallbacks:1,
            query:{ 'key': 'Hello10'  ,'AWSAccessKeyId': '*********' ,'policy':'{!$RemoteAction.S3FormController.getPolicy1}' ,'signature':'{!$RemoteAction.S3FormController.getSignedPolicy1}', 'acl': '{!AWS_S3_Object__c.Access__c}','success_action_status':'201' , 'success_action_redirect':'https://'+'{!$RemoteAction.S3FormController.getServerURL1}'+'/'+'{!AWS_S3_Object__c.id}' ,'Content-Type' :'application/zip'   }



          });

既存のJSライブラリを使用しているため、少し奇妙に見えます。このコードは 、 https: //s3.amazonaws.com/riteshにPOSTリクエストを送信していることを意味します 。riteshは、キー、AWSAccessKeyId、 policy、signature、acl、success_action_statusなどすべてのパラメーターがおそらく正しいので、このエラーが発生します。私のCors構成は

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://c.ap1.visual.force.com/</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

ヘッダーではなくパラメータのみを送信しています。追加のヘッダーを送信する必要があります。ヘッダーはマントンにお願いします!!このエラーを削除する方法を教えてください。

4

1 に答える 1

0

SFDC HTTP プロキシを使用する必要があります。このためには、アドレスhttps://s3.amazonaws.comを「リモート サイト」として定義する必要があります -> セットアップ -> 秒。-> リモート サイト。

リモート サイトの URL を入力します。すべての S コントロール、カスタム ボタンの JavaScript OnClick コマンド、Apex、および AJAX プロキシ コールは、salesforce.com からこの Web アドレスにアクセスできます。

新しい要求では、エンドポイント URL "https://c.[Instance].visual.force.com/services/proxy" を使用する必要があります。

リクエストのヘッダーに 'Authorization': 'OAuth {!GETSESSIONID()}'api-endpoint-url を追加する必要があります'SalesforceProxy-Endpoint', apiUrl

于 2013-02-22T13:50:46.237 に答える