5

AngularJS에서 일부 통계를 추적하고 사용자가 추가 처리를 위해 Google Apps 스크립트에 제출할 수있는 응용 프로그램을 만들려고했습니다. 모든 것은 컴퓨터에서 완벽하게 작동합니다. Chrome 및 Firefox에서 테스트했지만 iPad에서 제출하려고하면 다음과 같은 오류가 발생합니다.405 Method Not Allowed - iOS Safari를 제외한 모든 기능을 수행합니다.

리소스를로드하지 못했습니다. 서버가 405 상태로 응답했습니다 (메서드가 허용되지 않음)

리소스를로드하지 못했습니다 : null에서 요청할 수 없습니다.

XMLHttpRequest는 https://script.googleusercontent.com/macros/echo?user_content_key=UQXGbRq6...HLV301R을로드 할 수 없습니다. null로부터의 요구는 할 수 없다.

var URL = 'https://script.google.com/macros/s/.../exec'; 

$http.post(URL, 
    $.param({ packet: JSON.stringify($scope.data) }), { 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
     } 
    } 
).success(function(data, status) { 
    alert(data.packet); 
    $scope.rollover(); 
}).error(function(data, status) { 
    console.log(data); 
    console.log(status); 
    $scope.show_status(data); 
}); 

콘솔에 몇 줄을 인쇄합니다. 데이터 라인이 비어 있고 반환 된 상태는 404입니다.

도와주세요!

+0

아래에 업데이트를 게시했습니다. –

답변

1

이 문제는 아직 여전히 고정되도록 설정없이 현재 날짜로 해결 될 https://code.google.com/p/google-apps-script-issues/issues/detail?can=2&start=0&num=100&q=&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner&groupby=&sort=&id=3226

참조하십시오.

다른 원인에 대한 비표준 요청을 '프리 플라이트 (preflighting)'하기 위해 Safari에서 사용하는 OPTIONS 메소드를 Google Apps 스크립트가 처리 할 수없는 것이 원인이라고 생각합니다.

내가 사용하고있는 해결 방법은 내 서버에 요청하여 Google Apps 스크립트와 상호 작용하는 것입니다. 아름답고 느리지는 않지만 사이트가 제대로 작동하는지 확인해야합니다.

내 서버에서 매크로, ID 및 시트를 get params로 전달하면서 요청한 PHP 코드입니다. PHP는 다음이 구글에서 검색된 데이터를 반환

<?php 

header('Access-Control-Allow-Origin: *'); 
$url = 'https://script.google.com/macros/s/'; 
$url .= $_GET['macro']; 
$url .= '/exec?id='; 
$url .= $_GET['id']; 
$url .= '&sheet='; 
$url .= $_GET['sheet']; 

function get_data2($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 


$response = get_data2($url); 

echo $response; 

?> 

이 지금 사파리가 같은 도메인에 요청을하고 또한 우리가 403 리디렉션 노트 구글이 친절 CURLOPT_FOLLOWLOCATION 우리의 방식으로두고 다음과 같은 것을 의미한다.

업데이트 7 월 2015 년

나는 서버에서 405 method not allowed 응답을 수신하고있어 있지만, 데이터가 실제로 성공적으로 구글 앱 스크립트에 의해 수신되는 것으로 나타났습니다. 예를 들어 get 및 post 매개 변수를 문제없이받을 수있었습니다.

이 문제를 해결하기 위해 실제로받은 오류 코드는 AJAX 호출에서 오류 캐치의 스위치를 추가했습니다. 0 ... 무언가가 작동하고 있지만 신뢰할 수 없다는 것을 알게되어 기쁩니다. 생산이 너무 많습니다.

관련 문제