2011-11-01 2 views
0

내 프로젝트에서 YUI 자동 완성을 구현 중입니다. 자동 완성 제안을 제공하는 웹 서비스를 만들었습니다. 내 응용 프로그램과 웹 서비스를 동일한 컴퓨터에 배포하면 모든 것이 잘 작동합니다. 하지만 다른 컴퓨터에 웹 서비스를 배포하면 Firefox에서는 작동하지 않습니다 (그러나 IE에서는 작동합니다). 나는 Mozilla에서 작동하지 않는 동일한 원산지 정책으로 생각합니다. 여기
Mozilla에서 동일한 출처 정책을 다루는 방법

<script type="text/javascript"> 
YAHOO.example.BasicRemote = function() { 

    // Using an XHRDataSource to connect to web service 
    var oDS = new YAHOO.util.XHRDataSource("http://host_other_than_my_machine/i2b2/services/AutocompleteService/getCodes"); 


    // Set the responseType as XML 
    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_XML; 

    // Define the schema of the delimited results 
    oDS.responseSchema = { 
          resultNode: 'code', 
          fields: ['value']    
         }; 

    // Enable caching 
    oDS.maxCacheEntries = 0; 

    // Instantiate the AutoComplete 
    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS); 

    return { 
     oDS: oDS, 
     oAC: oAC 
    }; 
}(); 
</script> 

내 질문
1) 동일 출처 정책은 실제 문제가 있습니다 내 자동 완성 코드? 그렇다면 IE가 내 코드가 IE에서 작동하는 것과 동일한 정책에 바인딩되지 않습니까?
2) 어떻게 제거합니까? 내가 요청을 리디렉션하는 데 사용할 수있는 PHP 코드를 알고 있지만 어떻게 여기 그것을 사용할 수 있습니까?

~ Ajinkya.

답변

2

아마도 AJAX 요청의 출처와 관련된 문제 일 수 있습니다. Cross Origin Request Security을 조사해야합니다. 당신이 될 것입니다 도메인과 "http://trusted.site"대체 물론

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "http://trusted.site" 
</IfModule> 

:

기본적으로 아파치에 대한 당신은 "host_other_than_my_machine"htaccess로 파일에 다음을 추가해야합니다 님에게 요청합니다.


편집 : 여러 원격 도메인에 대한 액세스를 허용해야하는 경우 당신은 간단하게 사용할 수 있습니다

Header set Access-Control-Allow-Origin "*" 

이것은 일반적으로 보안 문제, 그러나 철저하게 특정을 고려해야합니다 안된다 즉, AJAX 응답을 통해 민감한 정보를 사용할 수있게하려는 경우입니다.

+0

제안을 주셔서 감사합니다. 그러나이 방법은 많은 컴퓨터에 배포 될 예정이므로이 방법을 시도 할 수 없습니다. 이름이 확실하지 않습니다. – xyz