2017-03-02 6 views
0

도메인 간 dojo 구성 요소를로드하려고하는데 브라우저에 javascript 파일을로드하는 GET 요청이 200 상태인데도 ready() 함수는 절대로 실행되지 않습니다. require 문. 이 예제에서 Comp1 구성 요소는 레거시 dojo.provide(), dojo.require() 등의 구문으로 작성되므로 비동기 설정을 legacyAsyc로 설정했습니다.Dojo 도메인 간 코드가 ready() 함수를 트리거하지 않음

어떤 일이 일어나고 있는지에 대한 자세한 정보를 얻으려고 시도 할 수있는 모든 제안은 훌륭합니다. js 파일 자체의 GET 요청에는 CORS 헤더가 없지만 Firebug에서 CORS 오류가 발생하지 않기 때문에 코드 실행에 필요하지는 않습니다 (??).

코드/config.

감사합니다.

 dojoConfig = { 
     async: "legacyAsync", 
     baseUrl: "https://my.remote.domain/path/to/dojo/", 
     has: { 
      "dojo-debug-messages": true 
     }, 
     tlmSiblingOfDojo: true, 
      packages: [{ 
       name: "myremotestuff", 
       location: "../../myremotestuff" 
      }], 
     trace:{ 
      "loader-inject":1, 
      "loader-define":1, 
      "loader-exec-module":1, 
      "loader-run-factory":1, 
      "loader-finish-exec":1, 
      "loader-define-module":1, 
      "loader-circular-dependency":1 
     }, 
     isDebug: true, 
     cacheBust: true 
    }; 

    ... 

<script type="text/javascript"> 

    console.info("=== SCRIPT BLOCK BEGIN ==="); 

    require.on('error', function (error) { 
     console.info("%%%% require error function fired. error: [ " + error + " ] %%%%"); 
    }); 

    require([ 
     "dojo/ready", 
     "myremotestuff/Comp1" 
    ], function (ready,comp1) { 

     ready(function(){ 
      console.info("ready() - *Begin* - (I never see these messages, and this line doesn't get hit in debug mode either)"); 
      console.info("ready() - comp1 defined? " + ((comp1 !== undefined) && (comp1 !== null))); 
      console.info("ready() - *End*"); 
     }); 

    }); 

    console.info("=== SCRIPT BLOCK END ==="); 

</script> 
+0

이 파일 사이 ready.js 및 dojo.js 상태 (200)와로드 매우 쉽다? – barbsan

답변

0

dojo require 모듈을 요구하기 위해 두건 아약스를 사용하십시오. ajax가 JavaScript에 관련 될 때마다 동일한 출처 정책이 적용됩니다.

Same-origin policy은 다른 도메인으로 데이터를 보내거나 보내지 못하게하는 브라우저의 보안 메커니즘입니다. 귀하의 경우에는 ready 함수가 호출되지 않습니다. 모듈의 요청이 브라우저에 의해 차단 되었기 때문입니다.

이 문제를 해결하는 가장 깨끗하고 편리한 방법은 AMD 모듈이있는 서버에서 CORS를 설정하는 것입니다.

활성화 CORS는 here a good tutorial website.

+0

내 조직에서 @ user1930364의 문제가 발생하여 솔루션이 서버 (CORS를 지원하며 브라우저에서 Origin : 헤더를받지 못함)로 도움이되지 않습니다. – ruckc

+0

@ruckc 예를 들어 SO에 새로운 질문을 추가하는 것을 고려해보십시오. 귀하의 코드, 그래서 우리는 그것을 볼 수 있습니다. 그것은 JS와 문제가 될 수 있습니다. – GibboK