我在GAE
上有一个应用,用于检查用户是否使用Google用户服务登录Google。如果用户未登录,则应该从Google重定向到登录页面。
以下是尝试执行此操作的代码:
class RegistrationHandler(webapp2.RequestHandler):
def post(self):
user = users.get_current_user()
if user:
username = self.request.get(user.nickname())
callback = self.request.get('callback')
member = Member.get_by_id('username')
if member:
self.response.write("A member with that id already exists")
else:
m_username=self.request.get('username')
m_name=self.request.get('name')
member = Member(id=m_username, username=m_username, member_name=m_name)
member.put()
if callback:
self.response.write(callback + '(' + member.toJSON() + ')')
else:
self.response.write(member.toJSON())
else:
self.redirect(users.create_login_url(self.request.uri))
但是,当我从我的jQuery Mobile
应用程序发出请求时,收到错误消息:
XMLHttpRequest cannot load http://localhost:18090/. No 'Access-Control-Allow-Origin'
header is present on the requested resource. Origin 'http://localhost:63343' is
therefore not allowed access.
所以我做了一点研究,发现这是由CORS
失败引起的。
所以我进一步挖掘并在this网站上找到了一些信息,说明要使用这段代码:
class CORSEnabledHandler(webapp.RequestHandler):
def get(self):
self.response.headers.add_header("Access-Control-Allow-Origin", "*")
self.response.headers['Content-Type'] = 'text/csv'
self.response.out.write(self.dump_csv())
在服务器上。
作为一个新手,我不确定如何实现这一点。javascript
中的其他建议有点复杂。
答案 0 :(得分:1)
如果网站概述足够,那么添加行
self.response.headers.add_header("Access-Control-Allow-Origin", "*")
在帖子处理程序内部和if user
条件内。
当然,这需要与客户端的相应javascript一起完成。 http://www.html5rocks.com/en/tutorials/cors/