我正在使用Django for Rest API和Angularjs作为前端。 我在Django中设置了标题,以便为域(www.example.com)提供API访问权限。
代码工作正常,我可以从我的系统(OS - MAC,浏览器:Firefox,Chrome,Safari,Android chrome,Native浏览器)进行ajax调用。几乎所有事情。
现在突然我在特定操作系统上收到此错误:
XMLHttpRequest cannot load http://www.apicalls.in/.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://www.example.com' is therefore not allowed access.
我在Windows 10 Chrome浏览器上遇到此问题(两个操作系统都有相同的Chrome版本--46.x.x.x)。我无法理解这种行为,因为API与所有其他具有相同浏览器的设备一起正常工作。以前有人遇到过这个问题吗?
答案 0 :(得分:0)
如果你的服务器配置正确(我的意思是,它尊重CORS规范),那么它可能是一个缓存问题。
如果您在ajax之前在浏览器中检索到http://www.apicalls.in/
,(也就是说,您已在请求标头中触发了http://www.apicalls.in/
的{{1}} GET请求。)
那么你的服务器将为没有Origin
标题的网页提供服务。由于相同的原始限制,您对同一URL的下一个ajax请求将会触发浏览器缓存并被浏览器阻止。
要解决此问题,您可以在您的请求网址中添加随机参数(例如Access-Control-Allow-Origin
),或者打开Chrome的开发者工具并在http://www.apicalls.in/?_=123
上进行检查。祝你好运:)