Flex:尝试访问Google Checkout时出现安全性错误

时间:2010-03-30 19:25:37

标签: flex google-checkout crossdomain.xml

我正在尝试将Flex应用与Google Checkout集成,并且在我的本地计算机上正常运行的代码在我的网站上测试时会出现安全错误。

这是错误:

Warning: Failed to load policy file from https://sandbox.google.com/crossdomain.xml

*** Security Sandbox Violation ***
Connection to https://sandbox.google.com/checkout/api/checkout/v2/request/Merchant/12345 halted - not permitted from http://www.mysite.com/demo/cartTest/main.swf
ERROR (flash.events::SecurityErrorEvent)#0
  bubbles = false
  cancelable = false
  currentTarget = (flash.net::URLLoader)#1
    bytesLoaded = 0
    bytesTotal = 0
    data = (null)
    dataFormat = "text"
  eventPhase = 2
  target = (flash.net::URLLoader)#1
  text = "Error #2170: Security sandbox violation: http://www.mysite.com/demo/cartTest/main.swf cannot send HTTP headers to https://sandbox.google.com/checkout/api/checkout/v2/request/Merchant/12345."
  type = "securityError"
Error: Request for resource at https://sandbox.google.com/checkout/api/checkout/v2/request/Merchant/12345 by requestor from http://www.mysite.com/demo/cartTest/main.swf is denied due to lack of policy file permissions.

就像我说的那样,本地运行良好。如何解决此安全错误?

3 个答案:

答案 0 :(得分:1)

为了解决这个问题,我在Flex中组装了一个html表单,然后将其传递给页面上的js,将其附加到页面上的空表单,然后提交表单。我保持表单隐藏所以所有UI输入和操作都发生在swf中。我不喜欢它,但我会忍受它。

答案 1 :(得分:0)

crossdomain.xml文件是一种安全约束,通常用于防止恶意行为。在本地运行SWF时权限不同。

如果您向其他域发出请求,则该其他域必须托管crossdomain.xml文件。如果他们不这样做,那就行不通了。例如,亚马逊hosts a crossdomain.xml file

This prior StackOverflow thread为您提供了一些选择。

另见Curtis Morley的post on crossdomain.xml files.

答案 2 :(得分:0)

您正在从http:加载swf并尝试访问https:网址。 默认情况下,这将被阻止(错误#2170)。

要使其工作,目标域(您尝试从Flash访问的域)应该有/crossdomain.xml,允许不安全的访问(secure =" false")。如果您只能在目标网址的根目录下访问https://sandbox.google.com/crossdomain.xml

,那么以下crossdomain.xml会适用于您的情况
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="master-only"/>
   <allow-access-from domain="*" secure="false"/>
   <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>

有关安全标志的更多信息,请访问:http://www.adobe.com/devnet/..../fplayer9_security.html#_Secure_Domain_Lists