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.