2010-03-30 10 views
0

J'essaie d'intégrer une application Flex avec Google Checkout et le code qui fonctionne bien sur ma machine locale est une erreur de sécurité lorsque je tester sur mon site.Flex: erreur de sécurité en essayant d'accéder à Google Checkout

Voici l'erreur:

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. 

Comme je l'ai dit, il fonctionne très bien localement. Comment puis-je contourner cette erreur de sécurité?

+0

Je pense que je pourrais assembler le panier Google Shopping dans mon application Flex, puis passer à .js de la page pour envoyer les données à google. – DrANoel

Répondre

1

Pour contourner celui-ci, je rassemblai un formulaire HTML dans Flex, puis passé dehors aux js sur la page, si elle avait joint à une forme vide sur la page, puis soumis le formulaire. Je garde le formulaire caché de sorte que toutes les entrées et actions de l'interface utilisateur se produisent dans le swf. Je ne l'aime pas mais je vais vivre avec.

0

Le fichier crossdomain.xml est une contrainte de sécurité généralement conçue pour empêcher les comportements malveillants. Les autorisations sont différentes lorsque vous exécutez le fichier SWF localement.

Si vous faites une demande à un domaine différent, cet autre domaine doit héberger un fichier crossdomain.xml. Si ce n'est pas le cas, cela ne fonctionnera pas. Amazon, par exemple, hosts a crossdomain.xml file.

This prior StackOverflow thread vous donne quelques options.

Voir aussi Curtis Morley post on crossdomain.xml files.

0

Vous chargez un fichier SWF depuis http: et en essayant d'accéder à une URL https:. Par défaut, ceci sera bloqué (erreur # 2170). Pour que cela fonctionne, le domaine cible (celui auquel vous essayez d'accéder à partir de Flash) doit avoir un /crossdomain.xml permettant un accès non sécurisé (secure = "false"). Ce qui suit crossdomain.xml aurait travaillé dans votre cas si seulement vous pouvez le rendre accessible à la racine de votre URL cible, à savoir https://sandbox.google.com/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> 

En savoir plus sur le drapeau sécurisé ici: http://www.adobe.com/devnet/..../fplayer9_security.html#_Secure_Domain_Lists