XMLHttpRequest无法加载https://s3.amazonaws.com/。 Access-Control-Allow-Origin不允许使用Origin

时间:2013-02-08 18:11:19

标签: amazon-web-services amazon-s3 salesforce visualforce resumablejs

我第一次使用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(a javascript library for sending big files in chunk) 正如你所看到我从网址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是我的桶名 设置其他帖子参数,如key,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>

我发送的参数不是任何标题我应该发送额外的标题哪个标题请发送!!请帮助如何删除此错误

1 个答案:

答案 0 :(得分:0)

您必须使用SFDC HTTP代理。为此,您必须将地址https://s3.amazonaws.com定义为“远程站点” - &gt;设置 - &gt;秒。 - &GT;远程站点。

  

输入远程站点的URL。所有s-controls,自定义按钮中的JavaScript OnClick命令,Apex和AJAX代理调用都可以从salesforce.com访问此Web地址。

您的新请求应使用端点网址:“https:// c。[Instance] .visual.force.com / services / proxy”。

在您的请求标题中,您必须添加 'Authorization': 'OAuth {!GETSESSIONID()}'和您的api-endpoint-url 'SalesforceProxy-Endpoint', apiUrl