Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 405方法不允许-适用于除iOS Safari之外的所有内容_Javascript_Angularjs_Mobile Safari_Http Status Code 405 - Fatal编程技术网

Javascript 405方法不允许-适用于除iOS Safari之外的所有内容

Javascript 405方法不允许-适用于除iOS Safari之外的所有内容,javascript,angularjs,mobile-safari,http-status-code-405,Javascript,Angularjs,Mobile Safari,Http Status Code 405,我一直在尝试用AngularJS制作一个应用程序,它可以跟踪一些统计数据,并允许用户将它们提交到google应用程序脚本进行进一步处理。在计算机上一切都能正常工作。我已经在chrome和firefox中对其进行了测试,但当我尝试在iPad上提交时,它显示了以下错误: 加载资源失败:服务器响应状态为405(不允许使用方法) 加载资源失败:无法从null发出任何请求 var URL = 'https://script.google.com/macros/s/.../exec'; $http.pos

我一直在尝试用AngularJS制作一个应用程序,它可以跟踪一些统计数据,并允许用户将它们提交到google应用程序脚本进行进一步处理。在计算机上一切都能正常工作。我已经在chrome和firefox中对其进行了测试,但当我尝试在iPad上提交时,它显示了以下错误:

加载资源失败:服务器响应状态为405(不允许使用方法)

加载资源失败:无法从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);
});
无法加载XMLHttpRequest。无法从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

请帮忙

请看

这个问题还没有解决,目前还没有确定日期

我认为根本原因是谷歌应用程序脚本无法处理Safari用于向其他域“预处理”非标准请求的选项方法

我正在使用的工作是向我的服务器发出请求,然后与GoogleApps脚本进行交互。不是美丽和缓慢,但我需要确保该网站的工作

下面是我用来在服务器上发出请求的php代码,将宏、id和工作表作为get参数传入。php然后返回从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;

?>

这现在意味着Safari正在向同一个域发出请求,我们也在遵循谷歌用CURLOPT_FOLLOWLOCATION善意地为我们添加的403重定向注释

2015年5月7日更新

我注意到,尽管我从服务器接收到
405方法不允许的响应
,但Google应用程序脚本实际上正在成功接收数据。例如,我能够毫无问题地接收get和post参数


为了适应这种情况,我在AJAX调用的错误捕获中添加了一个开关,因为我实际收到的错误代码是
0
。。。很高兴看到某些东西在工作,但我不会太相信它在生产中。

我在下面发布了一个更新