`
FZtree
  • 浏览: 105345 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CDNjs遇到CORS

阅读更多

Access to Font at 'http://honor.xxx.com/DIST/bootstrap/fonts/glyphicons-halflings-regular.woff2' from origin 'http://rlfund.yyy.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://rlfund.yyy.com' is therefore not allowed access.

 

在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题。另一个域名必须在response中添加Access-Control-Allow-Origin的header,才能让前者成功拿到数据。

 

ref:http://m.oicqzone.com/pc/2014083019611.html

今天与萌萌一起修bug,遇到一个跨域的问题。我们两个都对它有一些不太清楚,一起搞清楚后记录下来。
问题
在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题。另一个域名必须在response中添加Access-Control-Allow-Origin的header,才能让前者成功拿到数据。
这句话对吗?如果对,那么流程是什么样的?
跨域
怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域。
 
当跨域访问时,浏览器会发请求吗
这是真正困扰我们的问题,因为我们不清楚浏览器会怎么做。它会不会检查到你要请求的地址不是同一个域的,直接就禁止了呢?
我在jsbin上做了一个试验,使用Chrome打开。当点击“Run with Js”时,控制台上会打出:
XMLHttpRequest cannot load http://google.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://run.jsbin.io' is therefore not allowed access. 
但开发者工具的”Network”栏并没有任何记录。它到底发请求了没?
我又使用python -m SimpleHTTPServer在本地创建了一个小服务器,然后把地址改成它,结果发现在python这边的确打印出请求来了,可见浏览器的确发出了请求。
Access-Control-Allow-Origin
现在该Access-Control-Allow-Origin出场了。只有当目标页面的response中,包含了Access-Control-Allow-Origin这个header,并且它的值里有我们自己的域名时,浏览器才允许我们拿到它页面的数据进行下一步处理。如:
Access-Control-Allow-Origin: http://run.oicqzone.com
如果它的值设为*,则表示谁都可以用:
Access-Control-Allow-Origin: *
没错,在产品环境中,没人会用*

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics