2013-07-31 2 views
0

대상 웹 사이트에서 js 파일을 가져 오는 자동 JSLint 테스트를 설정하려고합니다. 그런 다음 Selenium을 사용하여 JSLint 테스트를 수행 할 테스트 사이트에 대해 실행합니다 Js 파일의 URL.하나의 로컬 호스트 사이트에서 다른 localhost 사이트의 Js 스크립트를 참조하십시오.

나는 두 개의 서로 다른 로컬 호스트 웹 사이트와 로컬이를 테스트하려고 문제로 실행하고 있습니다. 내가 URL이 JQuery와 URL을 가리키는 위의 코드를 실행하면

$(function() { 

     $.ajax({ 
     url: "http://code.jquery.com/jquery-latest.min.js", 
     //url: "http://localhost:62338/Scripts/test.js", // url to other local site 
     dataType: "text" 
     }).done(function (data) { 
     var myResult = JSLINT(data); 
     .. 
     }); 
    }); 

, 그것을 잘 작동하고 JSLint는이 파일을 분석합니다. 하지만 내 다른 localhost 사이트의 js 파일을 가리 키려고하면 문제가됩니다. Chrome에서 Network Inspector를 보면 스크립트 호출이 취소 된 것으로 표시됩니다.

나는이 방법으로 로컬 JS 호스트 파일에 액세스 할 수없는 나는 왜 어떤 아이디어?

나는 그런데 MVC4 웹 프로젝트를 사용하고 있습니다.

편집 : 내가 고르거나 내 IP를 가리키는 운이 없었다,하지만 도미닉의 대답은 결국 내가 크롬에 대한 보안을 해제 할 수 있어요이 question, 저를했다. 이 옵션이 마음에 들지 않지만 모든 TeamCity 자료를 설치하기 전에 로컬에서 테스트를 수행하면 Chrome이 다시 시작 되 자마자 변경 사항이 취소됩니다.

Edit2가 :

<httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 

를 대상 사이트의 web.config ..to 내가 사용하지 않고도 작동이 얻을 수 있었다 :이 question의 두번째 대답은 또한 추가하여, 나를 위해 일 Chrome의 보안. 그리고 대상 사이트가 단지 가짜 사이트이고 로컬로 사용 중이기 때문에이 기능이 훨씬 잘 작동합니다.

답변

1

이것은 아마도 same origin policy 때문에 ajax 호출이 localhost로 연결되지 않기 때문일 수 있습니다. 전화를 걸기 전에 아래 설정을 변경하면 문제가 해결 될 수 있습니다.

jQuery.support.cors = true 

로컬 호스트를 컴퓨터의 IP로 변경하면이 문제를 해결할 수 있습니다.

1

JavaScript는 호출 도메인을 특별히 화이트리스트에 포함되어 있지 않으면 크로스 도메인 요청을 할 수 없습니다. 테스트를하고 있기 때문에 원하는 이유가 없습니다.

(SVN, GIT) 설치 프로그램을 Selenium에 설치하고 저장소의 소스 코드에 대한 테스트를 실행하십시오.

또한 JSLinted되지 않은 JS 코드를 거부 미리 커밋 후크로 JSLint 후크있다.

+0

고마워 프리츠는 사전 커밋 고리를 들여다 보겠습니다. – DevDave

관련 문제