سؤال

أحاول دمج تطبيق Flex مع Google Checkout and Code الذي يتم تشغيله بشكل جيد على الجهاز المحلي الخاص بي ، يرمي خطأ أمان عند الاختبار على موقعي.

هذا هو الخطأ:

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.

كما قلت ، إنه يعمل بشكل جيد محليًا. كيف يمكنني الالتفاف على هذا الخطأ الأمني؟

هل كانت مفيدة؟

المحلول

للالتفاف على هذا ، قمت بتجميع نموذج HTML في Flex ثم قمت بتمريره إلى JS على الصفحة ، وتم إلحاقه بنموذج فارغ على الصفحة ثم أرسل النموذج. أحتفظ بالنموذج مخفيًا حتى تحدث جميع مدخلات واجهة المستخدم والإجراءات في SWF. أنا لا أحبه ولكني سأعيش معه.

نصائح أخرى

ملف crossdomain.xml هو قيد أمان مصمم بشكل عام لمنع السلوكيات الخبيثة. تختلف الأذونات عند تشغيل SWF محليًا.

إذا كنت تقدم طلبًا إلى مجال مختلف ، فيجب أن يستضيف هذا المجال الآخر ملف CrossDomain.xml. إذا لم يفعلوا ذلك ، فلن ينجح ذلك. أمازون ، على سبيل المثال ، يستضيف ملف crossdomain.xml.

هذا الموضوع السابق Stackoverflow يمنحك بعض الخيارات.

انظر أيضا كورتيس مورلي post على ملفات crossdomain.xml.

أنت تقوم بتحميل SWF من http: ومحاولة الوصول إلى https: عنوان URL. بشكل افتراضي ، سيتم حظر هذا (خطأ #2170).

لجعله يعمل المجال المستهدف (الذي تحاول الوصول إليه من الفلاش) يجب أن يكون /crossdomain.xml مما يسمح بالوصول غير الآمن (آمن = "خطأ"). ما يلي crossdomain.xml كان من شأنه أن يعمل في حالتك إذا كان بإمكانك فقط جعلها في متناول الجميع هدف 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top