Google 크롬이 XMLHttpRequest를 사용하여 로컬 파일에서 URL을로드하도록 허용


125

로컬 파일에서 XMLHttpRequest를 사용하여 HTTP 요청을 시도하면 기본적으로 Access-Control-Allow-Origin위반 으로 인해 실패합니다 .

그러나 로컬 웹 페이지를 직접 사용하고 있으므로 Google 크롬에서 이러한 요청을 허용하도록 할 수있는 방법이 있는지 궁금합니다. 로컬 파일에서 인터넷의 URL로 전송됩니다.

예를 들어 $.get('http://www.google.com/')로컬 파일에서 실행할 때 실패하지만 페이지를 직접 스크립팅했으며 직접 사용하고 있으므로이를 억제하고 URL을로드 할 수 있다면 매우 유용 할 것입니다.

그렇다면 Google 크롬이 로컬 파일에서 XMLHttpRequest를 사용하여 URL을로드하도록 허용하려면 어떻게해야합니까?


1
Access-Control-Allow-Origin: null웹 사이트에 의해 작동합니다. (
— ofc

3
@JessamynSmith : 답변의 순서가 변경되고 수락 된 답변도 변경 될 수 있으므로 '허용 된 답변 아래의 답변'과 같은 말을하는 것보다 답변에 연결하는 것이 좋습니다. 답변의 '공유'링크가 연결되는 URL을 사용하세요.
— Michael Scheper

2
@MichaelScheper 작동 한 실제 명령을 붙여 넣었으므로 귀하의 의견은 다소 관련이 없습니다. 단, 링크 포함에 가치가있는 경우 삭제 후 재 게시했습니다. 최신 Chrome에서 오류는 다음과 같습니다. XMLHttpRequest는 file : ///path/to/file/css/base.css를로드 할 수 없습니다. 교차 출처 요청은 http, data, chrome, chrome-extension, https, chrome-extension-resource와 같은 프로토콜 체계에 대해서만 지원됩니다. 이 응답 stackoverflow.com/a/4819114/1649165는 , 즉 명령 줄에서 크롬을 실행 나를 위해 일한 : 크롬 --allow-파일 액세스 -에서 - 파일
— Jessamyn 스미스

@JessamynSmith : 내 조언이 무관하다고 생각해서 죄송합니다. 특정 답변이 관련이 있다고 생각했기 때문에 귀하의 의견을 미래에 대비하고 싶을 것이라고 생각했습니다. 내 실수.
— Michael Scheper

답변:


49

시작 크롬 --disable-web-security

Windows의 경우 :

chrome.exe --disable-web-security

Mac :

open /Applications/Google\ Chrome.app/ --args --disable-web-security

이것은 교차 도메인 요청을 허용합니다.
이것이 로컬 파일에서도 작동하는지 모르겠지만 알려주십시오!

그리고 이것은 당신이 기대하는 것과 정확히 일치 하며 웹 보안을 비활성화 하므로 조심하십시오.


Mac에서도 Safari를 사용할 수 있습니다. 로컬 파일에서 요청할 때 기본적으로 AJAX를 로컬 파일로 허용합니다. 또한 '.exe'에 대해서는 Q에서 Windows에 대한 언급이 없습니다. Pim은 Windows 개발자이지만 여전히 Windows에 대해서는 언급되지 않았습니다.

1
예, 저는 Windows를 사용하고 있습니다. 죄송합니다. 지금 사용해 보겠습니다. 감사합니다. 그건 그렇고, 내 컴퓨터가 켜져있을 때 항상 Chrome을 실행하고 있으므로 로컬 파일을 사용하는 교차 도메인 요청 만 허용하거나 특정 탭에서만 허용하는 방법이 있습니까? 이 방법 때문에, 사실은 ... 같은 시간에 안전하게 인터넷을 찾아 볼 수 없습니다
— pimvdb

1
테스트를 위해 실행되는 안전하지 않은 독립형 버전과 안전한 인터넷 브라우징을 위해 Chrome을 설치 한 '실제'버전을 갖기 위해 최신 Chromium 빌드를 방금 다운로드했습니다. 그리고 그것은 작동합니다, 감사합니다!
— pimvdb

@ 톰 - 당신은 당신이 사용하는 등, 어떤 설정의 변경없이, 사파리와 Mac에서이 작업을 수행 할 수 있어야한다 "파일 : ///"프로토콜이 아닌 " 로컬 호스트 "
— 근처 Privman

2
나는 Safari 10.1에서 그것을 시도했고 그것은 나에게 주었다 : XMLHttpRequest cannot load file:///<my_local_file>. Cross origin requests are only supported for HTTP.그래서이 스레드의 Safari 브라우저에 대한 진술은 더 이상 유효하지 않습니다.
— 마이클 Cichon

233

--disable-web-security스위치를 사용하는 것은 매우 위험합니다 ! --allow-file-access-from-files스위치를 사용하여 XMLHttpRequest가 다른 파일의 파일에 액세스하도록 허용 할 수 있지만 보안을 전혀 비활성화하는 이유는 무엇 입니까?

이 명령을 사용하기 전에 실행중인 모든 Chrome 인스턴스를 종료해야합니다.

Windows의 경우 :

chrome.exe --allow-file-access-from-files

Mac :

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

Chrome 의이 "기능" 에 대한 토론 :


5
매번 터미널 / 명령 줄 또는 사용자 지정 바로 가기를 열지 않고도 이것을 기본 동작으로 만들 수 있습니까?
— Kokodoko 2014 년

1
@Kokodoko 아니라고 생각합니다.
— Konstantin Smolyanin 2014 년

2
@JoshH 웹 사이트 개발을 위해 로컬 웹 서버를 사용하고 브라우저에서 직접 로컬 파일에 액세스하는 것이 훨씬 낫다는 데 전적으로 동의합니다. 그러나 정확한 질문을했고 방금 대답했습니다.
— Konstantin Smolyanin

13
다른 사람이 이것을 시도 할 경우 :이 플래그는 사용할 수 없거나 수정할 수 없습니다chrome://flags
— Blaise

5
@pimvdb 나는 이것을 수락 된 답변으로 표시해야한다고 생각합니다.
— chris-l

21

Mac 버전. 터미널에서 실행 :

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

여기에 여러 개의 반대표가 있습니다. 내 대답에 무엇이 잘못되었는지 자세히 설명해 주시겠습니까?
— Nek

다른 답변이 설명 했듯이이 한 가지를 변경하는 특정 스위치가있을 때 모든 웹 보안을 비활성화하는 것은 현명하지 않습니다.
— curiousdannii

더 영구적 인 해결책이 있으면 좋을 것입니다. 이것은 사용자가 미리 알고 있고 크롬을 다시 시작해야한다고 가정합니다.
— Michael Dunn

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.