2013-03-29 42 views
1

a有一个基于google endpoints API的简单服务。所有的工作正常,但问题是API通过backbone.js从其他主机调用。所以我必须在服务器端允许“Access-Control-Allow-Origin:*”。Google Endpoints API自定义听众

但是在文档或其他东西中找不到任何解决方案。 我试图建立这样的app.yaml中,如:

http_headers: 
    Access-Control-Allow-Origin: http://.* 

,但这仅适用于static_dir而不是脚本工作

感谢anay的想法,并帮助

from google.appengine.ext import endpoints 
from google.appengine.ext import ndb 
from protorpc import messages 
from protorpc import message_types 

from protorpc import remote 

class SpotModel (ndb.Model): 
    description = ndb.StringProperty(required=True) 
    latitude = ndb.FloatProperty() 
    longitude = ndb.FloatProperty() 


class Spot (messages.Message): 
    description = messages.StringField(1, required=True) 
    lat = messages.FloatField(2) 
    lng = messages.FloatField(3) 
    id = messages.IntegerField(4) 


class SpotList (messages.Message): 
    items = messages.MessageField(Spot,1, repeated=True) 

@endpoints.api(name="spots", version='v1', 
      description="API for create, update and list spots") 
class SpotAPI(remote.Service): 

    @endpoints.method(Spot,Spot, 
        name='spot.insert', 
        path='spot', 
        http_method='POST') 
    def insertSpot(self, request): 
     newSpot = SpotModel(description = request.description,latitude = request.lat,longitude = request.lng) 
     newSpot.put() 
     return pareSpotToMessage(newSpot) 



app = endpoints.api_server([SpotAPI]) 
+1

您应该签出['endpoints-proto-datastore'](https://endpoints-proto-datastore.appspot.c om),它正是你的API所需要的,并且将你的代码减少一半:) – bossylobster

+0

你有什么问题? CORS完全支持Google Cloud Endpoints? – bossylobster

回答

0

它应该是

http_headers: 
    Access-Control-Allow-Origin: * 
相关问题