2016-12-11 8 views
1

나는 로컬 HTML 파일에 다음 그리스 몽키를 실행 할 수 있었다 :프로토콜/스키마에서 javascript 파일을 실행하는 방법은 무엇입니까?

// ==UserScript== 
// @name  test 
// @include  file:///C:/fx/test/a.html 
// @grant  none 
// ==/UserScript== 

var scriptElement = document.createElement("script"); 
scriptElement.type = "text/javascript"; 
scriptElement.src = "file://c:/fx/alert.js"; 
document.head.appendChild(scriptElement); 

내가 로컬 호스트에서 다음을 수행 할 수 있었다 :

// ==UserScript== 
// @name  testWeb 
// @include  http://localhost/test/a.html 
// @grant  none 
// ==/UserScript== 

var scriptElement = document.createElement("script"); 
scriptElement.type = "text/javascript"; 
scriptElement.src = "http://localhost/test/alert.js"; 
document.head.appendChild(scriptElement); 

는 그러나, 나는 다음을 수행 할 수 없습니다. 웹 서버에 HTML 파일이 있으며 로컬 드라이브에 스크립트 파일이 있습니다.

// ==UserScript== 
// @name  testWeb 
// @include  http://localhost/test/a.html 
// @grant  none 
// ==/UserScript== 

var scriptElement = document.createElement("script"); 
scriptElement.type = "text/javascript"; 
scriptElement.src = "file://c:/fx/alert.js"; 
document.head.appendChild(scriptElement); 

약 about : config에서 true로 설정되었습니다.
스크립트 태그에서 로컬 스크립트 파일을 실행하려면 어떻게해야합니까?

+0

마지막 샘플에'@include file : /// C :/fx/test/a.html'을 추가하면 어떨까요? – LGSon

+0

도메인간에 파일 시스템에 액세스하려고합니다. 대부분의 브라우저에서는 허용되지 않습니다. – Bindrid

+0

'fileIsGreaseable'은 greasemonkey가 브라우저에서'file : //'url을 방문했을 때 (보통'http : //'와'https : //'만을 가로 채기 만 함) 당신의 스크립트를 실행한다는 것을 의미합니다. – melpomene

답변

0

그런 프로토콜을 통해 리소스를로드하려고 시도하는 것은 기본적인 보안 오류입니다. file:// 개의 리소스 만로드 할 수 있다면 악의적 인 웹 사이트 (또는 제 3 자 광고)가 할 수있는 악의적 인 행위를 상상해보십시오. 당신은 이미 당신이해야 할 무엇인지


Security Error: Content at http://evil.com/pwner.htm may not load or link to file:///C:/user_passwords.db

(파이어 폭스) :

이러한 이유로, 브라우저는 등의 메시지와 함께 프로토콜에서 이러한 시도를 차단합니다

  • 스크립트가 file:// 프로토콜 페이지에 대해 실행되면 file://으로 리소스에 액세스하십시오. 프로토콜.
  • 스크립트가 http(s) 프로토콜 페이지에 대해 실행되면 http(s) 프로토콜로 리소스에 액세스하십시오.