2013-11-27 1 views
1

기본적으로 서버에서 PHP 파일에 AJAX 호출을 수행하려고합니다. 이것은 XMLHttpRequest를 사용하여 작동하지 않는 것 같습니다. 내가 다음과 같은 파일이 있다고 가정하자 :Chrome 앱 : 서버의 파일에서 데이터 읽기 및 쓰기

PHP 파일 : http://abc.de.fg/folder/data.php

과 txt 파일 : 나는, 내 크롬 응용 프로그램에서, 그 PHP 파일에 일부 데이터를 전달하고 대기하는 http://abc.de.fg/folder/data.txt

응답을 위해. PHP 파일은 data.txt 파일을 읽고 씁니다.

내가 크롬 응용 프로그램 (I 표준 웹 페이지를 통해 실행할 때이 코드가 작동 알고있다) 나는 다음과 같은 오류 얻을에서이 작업을 수행 할 때 :

Refused to set unsafe header "Content-length" main.js:250 
(anonymous function) main.js:250 

Refused to set unsafe header "Connection" main.js:251 
(anonymous function) main.js:251 

OPTIONS http://abc.de.fg/folder/data.php No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://ndakgilfeodmfkdmoojoeeckpajmflcd' is therefore not allowed access. main.js:253 
(anonymous function) main.js:253 

XMLHttpRequest cannot load http://abc.de.fg/folder/data.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://ndakgilfeodmfkdmoojoeeckpajmflcd' is therefore not allowed access. 

답변

1

혹시 Cross-Origin Resource Sharing 들어 본 적이 있습니까? 이는 클라이언트 측 스크립트가 다른 도메인의 정보에 액세스하지 못하게합니다. 다른 도메인은 전혀 다른 네임 스페이스, 하위 도메인 또는 다른 포트 일 수 있습니다.

링크 된 위키피디아 기사는 PHP에서 생성해야하는 헤더의 이름을 다음과 같이 지정합니다. 브라우저에 이미없는 헤더가 없습니다.

상황에 따라 헤더를 설정할 필요가 없으므로 JSONP을 사용하는 것이 더 나을 것입니다. chrome-extension : // ndakgilfeodmfkdmoojoeeckpajmflcd

설치 중에 생성 된 브라우저에서 생성 된 UID인지, 아니면 자신의 UUID인지 확실하지 않습니다. 플러그인을 Chrome 앱 스토어에서 사용할 수 있습니다. 나는 자주 Chrome App Developer가 아닙니다 ...

+1

나는 JSONP가 크롬 응용 프로그램에서 사용되는 콘텐츠 보안 정책으로 인해 작동합니다 생각하지 않습니다. http://developer.chrome.com/apps/contentSecurityPolicy.html – MatrixFrog

+0

@MatrixFrog 중요한 추가 사항입니다. 고맙습니다. – Kiruse

0

확실하지는 않지만 매니페스트 파일에 올바른 권한이 있는지 확인합니다 (앱의 네트워크 탭에서 HAR을 내보낼 수 있습니까? 실패한 요청은?). 권한에 호스트를 선언 한 경우 앱에서 도메인 간 요청을 할 수 있습니다.이 페이지의 표에서 첫 번째 항목을 참조하십시오. http://developer.chrome.com/extensions/declare_permissions.html

간략하게 "[scheme] : [host]/* "-

호스트 권한을 지정합니다. 확장 프로그램 또는 앱이 페이지에서 실행되는 코드와 상호 작용하려는 경우 필요합니다. 교차 출처 XMLHttpRequests, 프로그래밍 방식으로 삽입 된 콘텐츠 스크립트 및 확장 프로그램의 쿠키 API와 같은 많은 기능에는 호스트 권한이 필요합니다.

그래서 당신은 당신의 위의 PHP의 예를 들어, 매니페스트 파일의 수 :

"permissions": [ 
    "http://abc.de.fg/*", 
    ... 
] 
관련 문제