2012-02-10 89 views
1

后,我看了this文章,我的理解是,为了允许跨域Ajax调用,我必须设置服务器响应是访问控制允许来源:*(公众测试目的),这里是我的服务器代码,谷歌AppEngine上的Python跨域AJAX

self.response.headers.add_header('Access - Control - Allow - Origin:*') 
self.response.headers.add_header('content-type', 'application/json', charset = 'utf-8') 
self.response.out.write(simplejson.dumps(Jsonobject)) 

我不知道这是否是正确的。而我的Ajax调用

xhr.open("get", "http://example.com", true); 
xhr.setRequestHeader("Access-Control-Allow-Origin","example"); 

我总是得到这个错误。 Access-Control-Allow-Origin不允许原始位置为null。我该如何配置?非常感谢您

回答

2
  1. 您需要使用Access-Control-Allow-Origin,不Access - Control - Allow - Origin
  2. 我不知道那self.response.headers.add_header(str)是有效的,也许self.response.headers.add_header(key, name)
  3. *域不起作用(至少不适用于所有浏览器)。你必须使用确切的域名,全名和协议。像http://example.com
  4. 您需要Origin标头,用于ajax调用。我不知道如何配置原始的xhr,但我猜它是由浏览器自己制作的,而且你不能修改这个值。无论如何,你的域名不是example
  5. 不要忘记,它不适用于大多数IE和Opera浏览器。
+0

我固定它。谢谢你的时间,真的很感激。 – 2012-02-10 05:10:01

0

可能是这些代码行解决你的问题。

你可以做一件事,只需要设置Access-Control-Allow-Origin &访问控制允许在CustomeHeaders您的web服务web.config文件中的头。

<add name="Access-Control-Allow-Origin" value="*" /> 
<add name="Access-Control-Allow-Headers" value="Content-Type" /> 

如果你想只允许特定的域,你可以做到这一点与领域特定值,而不是*值