[javascript] Chrome에서 동일한 출처 정책을 사용 중지합니다.

Google Chrome 브라우저 에서 동일 출처 정책 을 사용 중지 할 수있는 방법이 있습니까?



답변

크롬 (또는 크롬)을 닫고 --disable-web-security인수로 다시 시작하십시오 . 방금 이것을 테스트하고 “localhost”(크롬 5 / 우분투에서 테스트)에서 제공되는 페이지에 src = “http://google.com”이 포함 된 iframe의 내용에 액세스 할 수 있는지 확인했습니다. 나를 위해 정확한 명령은 다음과 같습니다.

참고 : 명령을 실행하기 전에 모든 크롬 인스턴스를 종료하십시오.

chromium-browser --disable-web-security --user-data-dir="[some directory here]"

브라우저가 처음 열릴 때 “지원되지 않는 명령 줄을 사용하고 있습니다”라는 경고 메시지를 표시합니다.

크롬 소스에서 :

// Don't enforce the same-origin policy. (Used by people testing their sites.)
const wchar_t kDisableWebSecurity[] = L"disable-web-security";

Chrome 48 이전에는 다음을 사용할 수 있습니다.

chromium-browser --disable-web-security


답변

네. OSX의 경우 터미널을 열고 다음을 실행하십시오.

$ open -a Google\ Chrome --args --disable-web-security --user-data-dir

–OSX의 Chrome 49 이상에 –user-data-dir 필요

Linux의 경우 :

$ google-chrome --disable-web-security

또한 AJAX 또는 JSON과 같은 개발 목적으로 로컬 파일에 액세스하려는 경우에도이 플래그를 사용할 수 있습니다.

-–allow-file-access-from-files

Windows의 경우 명령 프롬프트로 이동하여 Chrome.exe가있는 폴더로 이동 한 다음

chrome.exe --disable-web-security

동일한 출처 정책을 비활성화하고 로컬 파일에 액세스 할 수 있어야합니다.

업데이트 : Chrome 22 이상에서는 다음과 같은 오류 메시지가 표시됩니다.

지원되지 않는 명령 줄 플래그 인 –disable-web-security를 ​​사용하고 있습니다. 안정성과 보안 문제가 발생합니다.

그러나 개발하는 동안 해당 메시지를 무시할 수 있습니다.


답변

Windows 사용자의 경우 :

여기에 허용 된 솔루션의 문제는 이미 Chrome을 열어두고 실행하려고하면 작동하지 않는다는 것입니다.

그러나 이것을 조사 할 때 슈퍼 유저에 대한 게시물을 보았습니다. 웹 보안 유무에 관계없이 Chrome을 실행할 수 있습니까?.

기본적으로 다음 명령을 실행하거나 명령으로 바로 가기를 만들고 Chrome을 열어서

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

다른 “보안”브라우저 인스턴스를 열어 놓고 정상적으로 작동하는 것과 동시에 새로운 “안전하지 않은”Chrome 인스턴스를 열 수 있습니다.
중요 : C:/Chrome dev session두 번째 시간 --disable-web-security이 작동하지 않으므로 창을 열 때마다 폴더를 삭제 / 삭제하십시오 . 따라서 변경 사항을 저장 한 다음을 사용하여 안전하지 않은 두 번째 Chrome 인스턴스로 다시 열 수 없습니다 --disable-web-security.


답변

들어 윈도우 :

  1. 시작 메뉴를 엽니 다
  2. 타입 windows+R 하거나 “실행”을 엽니 다
  3. 다음 명령을 실행하십시오.

    chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

대한 :

  1. 터미널로 이동
  2. 다음 명령을 실행하십시오.

    open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security

새로운 웹 보안 비활성화 크롬 브라우저가 다음 메시지와 함께 열립니다.

여기에 이미지 설명을 입력하십시오


답변

Chrome 버전 60.0.3112.78 (솔루션이 테스트되고 작동 한 날) 이상이고 오늘 19.01.2019 (ver. 71.0.3578.98)까지 Windows 사용자의 경우 . 당신은 하지 않는 어떤 크롬 인스턴스를 종료해야합니다.

  1. 바탕 화면에 바로 가기 만들기
  2. 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭하십시오.
  3. 대상 속성 편집
  4. 로 설정 –disable-웹 보안 –user-데이터 DIR = “C : / ChromeDevSession”: “\ Program 파일 (x 86) \ 구글 \ 크롬 \ 응용 프로그램 \ chrome.exe의 C”
  5. 크롬을 시작하고 –disable-web-security가 지원되지 않는다는 메시지를 무시 하십시오!

IT 관리자가 해킹 당할 수 있기 때문에이 특정 브라우저 인스턴스를 브라우징에 사용하지 마십시오!


답변

편집 3 : 확장 프로그램이 더 이상 존재하지 않는 것 같습니다 … 일반적으로 CORS를 해결하기 위해 별도의 디렉토리로 다른 Chrome 버전을 설정 하거나 https://addons.mozilla.org/en-US/ firefox / addon / cors-every // 대신

편집 2 : 더 이상 일관되게 작동하도록 할 수 없습니다.

편집 : 다른 프로젝트에 다른 요일을 사용하려고 시도했지만 작동이 중지되었습니다. 확장 프로그램을 제거했다가 다시 설치하면 기본값이 재설정됩니다.

원래 답변 :

Chrome을 다시 시작하고 웹 개발을 사용 중지하고 싶지 않았습니다 (개발 중 탐색 중이었기 때문에).이 Chrome 확장 프로그램을 우연히 발견했습니다.

Chrome 웹 스토어 허용 제어 허용 출처 : *
(https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=ko)

기본적으로 Allow-Access-Origin-Control 검사를 켜고 끄는 작은 토글 스위치입니다. 내가하고있는 일에 완벽하게 작동합니다.


답변

위의 솔루션 중 실제로 작동하지 않는 것 같습니다. –disable-웹 보안은 더 이상 최근 크롬 버전에서 지원되지 않습니다.

Allow-Control-Allow-Origin : *-크롬 확장은 부분적으로 문제를 해결했습니다. 요청이 GET 메소드를 사용하고 있고 사용자 정의 HTTP 헤더가없는 경우에만 작동합니다. 그렇지 않으면 크롬은 비행 전 요청으로 OPTIONS HTTP 요청을 보냅니다. 서버가 CORS를 지원하지 않으면 404 HTTP 상태 코드로 응답합니다. 플러그인이 응답 HTTP 상태 코드를 수정할 수 없습니다. 따라서 크롬은이 요청을 거부합니다. 크롬 플러그인이 현재 크롬 확장 API를 기반으로 응답 HTTP 상태 코드를 수정할 수있는 방법이 없습니다. 그리고 XHR에서 시작한 요청에 대해서도 리디렉션을 수행 할 수 없습니다.

Chrome이 왜 개발자의 삶을 어렵게 만드는지 잘 모르겠습니다. 개발 용도로도 불필요하게 XSS 보안 검사를 비활성화하는 모든 가능한 방법을 차단합니다.

며칠의 노력과 연구 끝에 하나의 솔루션이 완벽하게 작동합니다 . corsproxy 를 사용하는 입니다. 여기에는 두 가지 옵션이 있습니다. 1. [ https://cors-anywhere.herokuapp.com/] 사용
2. 로컬 상자에 corsproxy를 설치하십시오 . npm install -g corsproxy

[2018 년 6 월 23 일 업데이트] 최근 corsproxy를 다시 사용해야하는 SPA 앱을 개발 중입니다. 그러나 github의 corsproxy 중 어느 것도 내 요구 사항을 충족시킬 수없는 것 같습니다.

  • 보안상의 이유로 방화벽 내부에서 실행해야합니다. 사용할 수 없습니다 https://cors-anywhere.herokuapp.com/을 .
  • 크롬은 https 페이지에서 no-https 아약스 요청을 차단하므로 https를 지원해야합니다.
  • nodejs에서 실행해야합니다. 다른 언어 스택을 유지하고 싶지 않습니다.

그래서 nodejs를 사용하여 자체 버전의 corsproxy를 개발하기로 결정했습니다. 실제로 매우 간단합니다. 나는 그것을 github에 요점으로 출판했다. 다음은 소스 코드 요지입니다.
https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10

  • 추가 종속성없이 일반 nodejs 코드에 있습니다.
  • http 및 https 모드에서 (명령 행에서 https 포트 번호를 전달하여) https를 실행하려면 cert 및 키를 생성하여 webroot 디렉토리에 저장해야합니다.
  • 정적 파일 서버 역할도합니다
  • 비행 전 OPTION 요청도 지원합니다.

CORSProxy 서버 (http 포트 8080)를 시작하려면 node static_server.js 8080

프록시에 액세스하려면 :
http : // host : 8080 / http : //www.somesite.com