如何创建Google App Engine PHP Restful API服务?

时间:2015-12-03 17:58:29

标签: php rest google-app-engine

我正在尝试使用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>

服务器设置为返回&#34;成功&#34;的PHP回应响应。或者&#34;失败&#34;。

  1. 我在Google App Engine中尝试了上述脚本,它没有问题,它接受了数据并返回了响应。

  2. 然后我在000webhost.com上创建了一个网页并在那里测试了代码,它接受了数据但没有回复。

  3. 然后我将代码发送给需要发送数据的人,当他们尝试发送数据时,它说他们是未经授权的,没有接受任何数据。

  4. 然后我尝试了以下网站https://resttesttest.com/,我的服务器接受数据,但是我没有返回响应,而是收到以下错误,

  5.   

    哦不! Javascript返回HTTP 0错误。这是一个常见原因   可能发生的是您从a请求了跨域资源   服务器中没有包含相应的CORS头   响应。

    我尝试将以下内容添加到我的app.yaml中,但没有成功,

    http_headers:
     Access-Control-Allow-Origin: *
     Access-Control-Allow-Methods: *
    

    有什么想法吗?

2 个答案:

答案 0 :(得分:0)

以下是导致问题的原因,

http_headers:
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Methods: *

Google App Engine不接受这些参数,因此我只在PHP中使用了以下行,

header( 'Access-Control-Allow-Origin: *' );

现在有效。

答案 1 :(得分:0)

在app.yaml中,http_headers必须属于handlers中的特定处理程序规范,而不是#34;独立的&#34;因为你似乎正在使用它。

文档中建议的示例是:

handlers:
- url: /images
  static_dir: static/images
  http_headers:
    Access-Control-Allow-Origin: '*'

但当然您也可以将它应用于其他类型的处理程序,而不仅仅是示例中的静态服务。