在我阅读了这篇文章后,我了解到,为了允许跨域ajax调用,我必须将服务器响应设置为Access Control allow Origin:*(出于测试目的而公开),这是我的服务器代码,Python 中的Google AppEngine
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");
我总是犯这个错误访问控制允许原点不允许原点为null如何配置?非常感谢
- 您需要使用
Access-Control-Allow-Origin
,而不是Access - Control - Allow - Origin
- 我不确定
self.response.headers.add_header(str)
是否有效,也许是self.response.headers.add_header(key, name)
*
域不起作用(至少不适用于所有浏览器)。你必须使用确切的域名、全名和协议。类似http://example.com
- 您需要
Origin
头,用于ajax调用。我不知道如何配置原始xhr
,但我猜它是由浏览器自己制作的,您不能修改这个值。无论如何,你的域不是example
- 别忘了,它不适用于大多数IE和Opera浏览器
也许这些代码行可以解决您的问题。
你可以做一件事,只需要设置访问控制允许起源&访问控制允许CustomeHeaders中的Headers访问web服务web.config文件。
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
如果你想只允许特定的域,你可以用域的特定值来实现,而不是*value