我在 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
中的其他建议有点复杂。
最佳答案
如果网站概述的内容足够,则添加以下行
self.response.headers.add_header("Access-Control-Allow-Origin", "*")
在您的帖子处理程序内和您的 if user
条件内。
当然,这需要在客户端结合适当的 JavaScript 来完成。 http://www.html5rocks.com/en/tutorials/cors/
关于javascript - 在 Google App Engine 服务器中实现 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861596/