2014-04-26 19 views
5

AngularJS uygulamasında bazı istatistikleri takip eden bir uygulama yapmaya çalışıyorum ve kullanıcıların daha fazla işlem için bir google uygulamalar komut dosyasına göndermelerine izin veriyor. Her şey bilgisayarda mükemmel çalışır. Ben krom ve ateş test ettik, ama iPad'de göndermek çalıştığınızda aşağıdaki hata mesajları gösterir: (yöntem verilmiyor)405 Yöntem İzin Verilmiyor - iOS Safari hariç her şeyde çalışıyor Safari

sunucusu 405 durumuyla yanıt verdi:

kaynak yüklenemedi

Kaynak yüklenemedi: Boştan istek yapılamıyor.

XMLHttpRequest, https://script.googleusercontent.com/macros/echo?user_content_key=UQXGbRq6...HLV301R yüklenemiyor. Null'dan istekte bulunamaz.

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); 
}); 

Konsolda birkaç satır yazdırır. Veri hattı boş ve iade durumu 404'tür.

Lütfen yardım edin!

+0

Aşağıdan bir güncelleme gönderdim –

cevap

1

Bu sorun henüz hala düzeltilmesi ayarlanmış hiçbir geçerli tarihle çözülecek 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

bakınız.

Kök nedeninin, google apps komut dosyasının Safari tarafından "standart dışı önizleme" standart dışı istekleri için diğer alanlara kullandığı OPTIONS yöntemiyle başa çıkamamasından kaynaklandığına inanıyorum.

Kullanmakta olduğum iş, sunucumun google apps komut dosyasıyla etkileşime geçmesini istemektir. Güzel ve yavaş değil, ama sitenin çalıştığından emin olmalıyım.

Sunucumda isteğimi yapmak için kullandığım php kodu, makro, kimlik ve sayfadan param. php sonra google alınan verileri döndürür:

<?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; 

?> 

Bu şimdi Safari, aynı etki alanına bir istekte bulunuyor ve ayrıca 403 yönlendirme notu google nazik CURLOPT_FOLLOWLOCATION ile yolumuza koyar takip etmesidir.

güncelleme 7 Mayıs 2015

ben sunucusundan bir 405 method not allowed yanıtını alıyorum rağmen, veri aslında başarıyla Google App Script tarafından alındığını fark ettik. Örneğin, herhangi bir sorun olmadan get ve post parametrelerini alabildim.

Bunun için, aslında bir şey çalıştığını gördüğüme sevindim hata kodu olarak AJAX çağrısından hata yakalamasında bir ek ekledim ... 0 Bu üretimde çok fazla.