2012-02-10 108 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" /> 

如果你想只允許特定的域,你可以做到這一點與領域特定值,而不是*值