我正在尝试使用PHP在Google App Engine中创建一个Restful API页面,允许外部实体向其发送数据。我首先在Chrome扩展"Advanced Rest Client"中测试所有内容,该扩展接受数据并返回响应。然后我创建了下面的html,这样我就可以用Javascript、来测试它
<html><head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
</head>
<body>
<span id="response"></span>
<script>
var url = "https://www.website.com/api/"
var data = { "test":"success", };
var response = function(data){ $("#response").html(data); };
$.post(url, data, response);
</script>
</body></html>
服务器被设置为返回"成功"或"失败"的PHP回声响应。
我在谷歌应用引擎中尝试了上面的脚本,它没有问题,它接受了数据并返回了响应。
然后我在000webhost.com上创建了一个网页,并在那里测试了代码,它接受了数据,但不会返回响应。
然后,我将代码发送给需要发送数据的人,当他们尝试时,代码显示他们未经授权,不接受任何数据。
然后我尝试了以下网站,https://resttesttest.com/,我的服务器接受数据,但我没有返回响应,而是收到以下错误,
哦,不!Javascript返回HTTP 0错误。一个常见的原因是可能发生的情况是,您从在回答
我尝试将以下内容添加到我的app.yaml中,但没有成功,
http_headers:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
有什么想法吗?
是以下原因导致问题,
http_headers:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
谷歌应用程序引擎不接受这些参数,所以我只是在我的PHP中使用了以下行,
header( 'Access-Control-Allow-Origin: *' );
它现在起作用了。
在app.yaml中,http_headers
必须符合handlers
中的特定处理程序规范,而不是使用它时的"独立"规范。
文档中建议的示例具体为:
handlers:
- url: /images
static_dir: static/images
http_headers:
Access-Control-Allow-Origin: '*'
当然,您也可以将它应用于其他类型的处理程序,而不仅仅是像示例中那样的静态处理程序。