![](/img/trans.png)
[英]Getting raw HTTP Data (Headers, Cookies, etc) in Google Cloud Endpoints
[英]Cloud Endpoints HTTP Cookies
我正在使用Python應用程序實施Cloud Endpoints,該應用程序使用自定義身份驗證( GAE Sessions )而不是Google帳戶。 我需要驗證來自Javascript客戶端的請求,因此我希望能夠訪問cookie信息。
閱讀這個其他問題讓我相信這是可能的,但也許沒有記錄。 我不熟悉App Engine的Java端,所以我不太確定如何將該片段翻譯成Python。 這是我的一個方法的示例:
class EndpointsAPI(remote.Service):
@endpoints.method(Query_In, Donations_Out, path='get/donations',
http_method='GET', name='get.donations')
def get_donations(self, req):
#Authenticate request via cookie
其中Query_In
和Donations_Out
都是ProtoRPC消息( messages.Message
)。 函數中的參數req
只是Query_In
一個實例,我沒有找到任何與HTTP數據相關的屬性,但是我可能錯了。
首先,我建議您嘗試使用來自客戶端的OAuth 2.0,就像在Tic Tac Toe 示例中所做的那樣。
Cookie會在Cookie標頭中發送到服務器,這些值通常在WSGI環境中使用密鑰'HTTP_...'
,其中...
對應於標頭名稱:
http = {key: value for key, value in os.environ.iteritems()
if key.lower().startswith('http')}
對於cookie, os.getenv('HTTP_COOKIE')
將為您提供所尋找的標題值。 不幸的是,默認情況下,這不會通過Google的API基礎結構傳遞。
更新 :自1.8.0版本起,已為Python應用程序啟用此功能。 要通過cookie發送,請指定以下內容:
from google.appengine.ext.endpoints import api_config
AUTH_CONFIG = api_config.ApiAuth(allow_cookie_auth=True)
@endpoints.api(name='myapi', version='v1', auth=AUTH_CONFIG, ...)
class MyApi(remote.service):
...
這是一個(不一定是全面的列表)標題,通過它:
HTTP_AUTHORIZATION
HTTP_REFERER
HTTP_X_APPENGINE_COUNTRY
HTTP_X_APPENGINE_CITYLATLONG
HTTP_ORIGIN
HTTP_ACCEPT_CHARSET
HTTP_ORIGINALMETHOD
HTTP_X_APPENGINE_REGION
HTTP_X_ORIGIN
HTTP_X_REFERER
HTTP_X_JAVASCRIPT_USER_AGENT
HTTP_METHOD
HTTP_HOST
HTTP_CONTENT_TYPE
HTTP_CONTENT_LENGTH
HTTP_X_APPENGINE_PEER
HTTP_ACCEPT
HTTP_USER_AGENT
HTTP_X_APPENGINE_CITY
HTTP_X_CLIENTDETAILS
HTTP_ACCEPT_LANGUAGE
對於在這里降落的Java人。 您需要添加以下注釋才能在端點中使用Cookie:
@Api(auth = @ApiAuth(allowCookieAuth = AnnotationBoolean.TRUE))
(沒有它,它將在本地開發服務器上工作,但不在真正的GAE實例上工作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.