Flex: ошибка безопасности при попытке доступа к Google Checkout - PullRequest
0 голосов
/ 30 марта 2010

Я пытаюсь интегрировать приложение 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 ]

1 голос
/ 13 мая 2010

Чтобы обойти это, я собрал HTML-форму во Flex, а затем передал ее js на странице, добавил ее в пустую форму на странице и затем отправил форму. Я скрываю форму, чтобы все входные данные и действия пользовательского интерфейса происходили в SWF. Я не люблю это, но я буду жить с этим.

0 голосов
/ 19 января 2015

Вы загружаете SWF-файл с http: и пытаетесь получить доступ к URL-адресу https:. По умолчанию это будет заблокировано (ошибка # 2170).

Чтобы он работал, целевой домен (тот, к которому вы пытаетесь получить доступ из Flash) должен иметь /crossdomain.xml, который разрешает небезопасный доступ (secure = "false"). Следующее crossdomain.xml сработало бы в вашем случае, если бы только вы могли сделать его доступным в корне вашего target URL, т.е. 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>

Подробнее о флаге безопасности здесь: http://www.adobe.com/devnet/..../fplayer9_security.html#_Secure_Domain_Lists

0 голосов
/ 30 марта 2010

Файл crossdomain.xml представляет собой ограничение безопасности, обычно предназначенное для предотвращения злонамеренного поведения. Разрешения различаются при локальном запуске SWF.

Если вы делаете запрос в другой домен, этот другой домен должен содержать файл crossdomain.xml. Если они этого не сделают, это не будет работать. Amazon, например, размещает файл crossdomain.xml .

Этот предыдущий поток StackOverflow предоставляет несколько вариантов.

Также см. Сообщение Кертиса Морли о файлах crossdomain.xml.

...