5

Ich habe versucht, eine Anwendung in AngularJS zu erstellen, die einige Statistiken verfolgt und Benutzern ermöglicht, sie zur weiteren Verarbeitung an ein Google Apps-Skript zu senden. Alles funktioniert perfekt auf dem Computer. Ich habe es in Chrom getestet und in firefox, aber wenn ich versuche, auf dem iPad eintragen zeigt die folgenden Fehler:405 Method Not Allowed - Funktioniert für alles außer iOS Safari

fehlgeschlagen Ressource laden: der Server reagiert mit dem Status 405 (Methode nicht erlaubt)

Fehler beim Laden der Ressource: Es können keine Anforderungen von null gestellt werden.

XMLHttpRequest kann https://script.googleusercontent.com/macros/echo?user_content_key=UQXGbRq6...HLV301R nicht laden. Kann keine Anfragen von null machen.

Es druckt ein paar Zeilen in der Konsole. Die Datenzeile ist leer und der zurückgegebene Status ist 404.

Bitte helfen!

+0

Ich habe ein Update unten gepostet –

Antwort

1

Bitte sehen 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

Dieses Problem nach wie vor noch ist gesetzt, ohne das aktuelle Datum zu lösenden fixiert werden.

Ich glaube, dass die Ursache dafür verantwortlich ist, dass das Google Apps-Skript nicht mit der OPTIONS-Methode umgehen kann, die von Safari verwendet wird, um nicht-standardmäßige Anfragen an andere Domänen "zu prüfen".

Die Arbeit, die ich verwende, ist eine Anfrage an meinen Server, um dann mit dem Google Apps-Skript zu interagieren. Nicht schön und langsam, aber ich muss sicherstellen, dass die Website funktioniert.

Hier ist der PHP-Code, den ich verwendet habe, um die Anfrage auf meinem Server zu machen, übergeben Sie das Makro, ID und Blatt als Get Params. Die PHP gibt dann die abgerufenen Daten von Google:

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

?> 

jetzt Dies bedeutet, dass Safari eine Anfrage an die gleiche Domain macht und auch verfolgen wir die 403 Umleitung Notiz Google in unserem Weg mit CURLOPT_FOLLOWLOCATION freundlich setzt.

Update 7. Mai 2015

Ich habe bemerkt, dass, obwohl ich eine 405 method not allowed Antwort vom Server empfängt, Daten tatsächlich durch das Google App Script erfolgreich empfangen werden. Zum Beispiel konnte ich die Parameter get und post ohne Probleme erhalten.

Um dies zu berücksichtigen, habe ich einen Schalter in der Fehler Catch aus dem AJAX Anruf hinzugefügt, da der Fehlercode, den ich tatsächlich erhalte, 0 ... glücklich zu sehen, dass etwas funktioniert, aber ich würde nicht vertrauen es ist zu viel in der Produktion.