2

我第一次使用 AWS 和 s3 时,我必须将它与 salesforce 集成以上传大文件,当我尝试上传文件时,它给了我错误

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 库) ,你可以看到我正在从 url https://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发送一个发布请求 ritesh 是我的存储桶名称设置其他发布参数,如密钥、AWSAccessKeyId政策、签名、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定义为“远程站点”-> 设置-> Sec。-> 远程站点。

输入远程站点的 URL。所有 s-control、自定义按钮中的 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 回答