【问题标题】:Configure google app engine application for cross-domain为跨域配置谷歌应用引擎应用
【发布时间】:2011-10-02 23:31:23
【问题描述】:

能否请您告知,我们如何配置托管在 Google App Engine 上的 Python 应用程序以接受来自浏览器的 AJAX 的 OPTIONS、GET、POST、PUT 和 DELETE?

此类调用的具体细节是 XmlHTTPRequest 首先向服务器发出 OPTIONS 请求,以查看允许哪些跨域动词,如果需要,列表中包含一个 - 浏览器随后会发出此请求。

现在我们只是得到一个 405 Method Not Allowed 试图让浏览器执行 OPTIONS 请求。

AJAX 调用正在从另一个站点/域进行。

谢谢,

罗马式。

【问题讨论】:

  • 您使用的是 Java 还是 Python?什么框架?

标签: ajax google-app-engine cross-domain


【解决方案1】:

绕过same-origin policy允许浏览器跨域请求的一种方法是采用JSONP但AFAIK,它只支持GET动词;其实就是一个 GET 请求,取回 DOM Document 中注入的 <script> 标签的 src

如果 JSONP 不是一个选项,更现代的方法是使用 CORS,将 Access-Control-Allow-Origin Http 标头添加到响应 *

Python中:

self.response.headers['Access-Control-Allow-Origin'] = '*'

Java中:

resp.setHeader("Access-Control-Allow-Origin", "*");

* 检查浏览器兼容性here

【讨论】:

  • 嗯,JSONP 对我们来说不是一个选项,只要我们在响应中添加“Vary:Origin”标头后让它正常工作,JSON 就可以正常工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 2015-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多