2014-12-21 26 views
1

我想提出一个GET调用Foursquare的OAuth的URL。浏览器控制台打印以下错误Foursquare的回报“没有访问控制允许起源”头存在错误

XMLHttpRequest cannot load https://foursquare.com/oauth2/authenticate?client_id=DF4I1TGNVHAM40PDLOHZQZ…onse_type=code&redirect_uri=http://localhost:9000/auth/foursquare/callback. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. 

这里是进行调用的代码片段:

$http.get(url).success(function(data,status,headers,config){ 
}); 

但是,如果我链接按钮,这个URL,浏览器需要我的认证页面。

这有什么区别?当URL链接到一个按钮,为什么它是工作,为什么当GET调用该URL使得它不工作?

+0

阅读有关CORS。在这种情况下,您将无法使用AJAX。 – dfsq

回答

0

的Ajax不允许从一个域到另一个域的请求,除非除非服务器提供了一种访问控制允许来源(CORS)报头。允许在域之间进行链接。

Mozilla有一些有用的信息,什么是允许的,什么不是。 https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Cross-origin_network_access

  • 通常允许跨源写入。示例是链接,重定向和表单提交。某些很少使用的HTTP请求需要预检。
  • 跨源嵌入通常允许诸如图像,脚本。
  • 跨域读取,通常不允许诸如Ajax调用
+0

谢谢韦恩。你的回答和你提供的链接帮助我理解我的问题 – bala

相关问题