`
yutingliu
  • 浏览: 1924 次
文章分类
社区版块
存档分类
最新评论

Access-Control-Allow-Origin与跨域

    博客分类:
  • JS
JS 
阅读更多
http://www.tuicool.com/articles/7FVnMz

今天与萌萌一起修bug,遇到一个跨域的问题。我们两个都对它有一些不太清楚,一起搞清楚后记录下来。

问题

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

这句话对吗?如果对,那么流程是什么样的?

跨域

怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域。

参考:

Are different ports on the same server considered cross-domain? (Ajax-wise)
同事李栋的博客:跨源资源共享
当跨域访问时,浏览器会发请求吗

这是真正困扰我们的问题,因为我们不清楚浏览器会怎么做。它会不会检查到你要请求的地址不是同一个域的,直接就禁止了呢?

我在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.jsbin.io
如果它的值设为 * ,则表示谁都可以用:

Access-Control-Allow-Origin: *
没错,在产品环境中,没人会用 *

你可以阅读下面这篇文章了解更多,并可找到其中的”Run Sample”链接,实际体验一下:

http://www.html5rocks.com/en/tutorials/cors/
分享到:
评论

相关推荐

    Nginx跨域设置Access-Control-Allow-Origin无效的解决办法

    add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET,POST'; 使用以下配置,生效。 if ($request_method = '...

    谷歌跨域插件Access-Control-Allow-Origin

    标题中的“谷歌跨域插件Access-Control-Allow-Origin”指的是在谷歌浏览器上使用的扩展程序,用于解决Web开发过程中遇到的跨域问题。跨域是由于浏览器的同源策略(Same-origin policy)引起的,它限制了来自不同源的...

    TOMCAT 跨域 CORS Access-Control-Allow-Origin cors-filter

    标题“TOMCAT 跨域 CORS Access-Control-Allow-Origin cors-filter”提及的是在Tomcat服务器上实现CORS策略的一种方式,主要涉及到`Access-Control-Allow-Origin`这个关键的响应头。 `Access-Control-Allow-Origin`...

    Access-Control-Allow-Origin跨域问题的终极解决,给自己做备份

    2. CORS(Cross-Origin Resource Sharing):现代浏览器支持的跨域方式,通过设置Access-Control-Allow-Origin等CORS相关的响应头,允许特定或所有源进行跨域请求。CORS支持所有HTTP方法,并提供了完整的错误处理机制...

    Allow CORS Access-Control-Allow-0.1.9.zip

    允许CORS:通过Access-Control-Allow-Origin,您可以轻松地在Web应用程序中执行跨域Ajax请求。 描述: 轻松将(Access-Control-Allow-Origin:*)规则添加到响应标头。 允许CORS:通过Access-Control-Allow-Origin...

    Allow-CORS_-Access-Control-Allow-Origin_v0.1.2.crx

    允许CORS:通过Access-Control-Allow-Origin,您可以轻松地在Web应用程序中执行跨域Ajax请求。 只需激活插件并执行请求。默认情况下(在JavaScript API中),CORS或跨源资源共享在现代浏览器中被阻止。安装此加载项...

    静态文件访问不到报No Access-Control-Allow-Origin处理办法

    当一个网页尝试从不同的源(协议、域名或端口)请求资源时,如果目标服务器没有允许这个源的权限,浏览器会阻止该请求,从而出现"No 'Access-Control-Allow-Origin' header is present on the requested resource"的...

    allow-cors-access-control插件

    这个“标题”提到的“allow-cors-access-control插件”显然是针对这一机制的一个工具,旨在帮助前端开发者简化跨域Ajax请求的处理过程。 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页...

    Allow-Control-Allow-Origin谷歌跨域插件

    总之,"Allow-Control-Allow-Origin"是一个用于处理跨域资源共享的关键头部,而谷歌跨域插件则是开发者在测试和调试阶段的一种辅助工具,它能暂时绕过浏览器的同源策略限制。然而,在实际应用中,为了安全起见,应...

    Access-Control-Allow-Origin

    总之,"Access-Control-Allow-Origin" Chrome扩展程序是一个强大的开发工具,它解决了在本地开发环境中进行跨域请求的问题,让开发者可以更方便地进行Web应用开发,无需为测试和调试数据而编写模拟数据或设置复杂的...

    谷歌跨域插件allow-cors-access-control.zip

    标题中的“谷歌跨域插件allow-cors-access-control.zip”指的是一个用于解决浏览器跨域问题的Chrome插件。跨域资源共享(CORS)是一种机制,它允许Web应用程序从不同的源请求资源,比如JavaScript通过Ajax从非同源的...

    Allow-Control-Allow-Origin谷歌插件

    这时,可以通过设置Access-Control-Allow-Origin响应头来允许特定来源的请求,或者使用JSONP、CORS等技术来实现跨域。 "谷歌插件"是指为谷歌浏览器设计的扩展程序,它们可以增强浏览器的功能,比如添加新的工具栏...

    allow-cors-access-control插件,解决跨域问题,内含使用教程

    `allow-cors-access-control` 插件就是为了解决这一问题而诞生的,它允许我们绕过浏览器的同源策略,方便地在Chrome浏览器上进行跨域请求。 `allow-cors-access-control` 插件的核心功能在于启用CORS(Cross-Origin...

    Allow-Control-Allow-Origin

    解决浏览器跨域请求出现No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.问题

    Access-Control-Allow-Origin 0.1.5_0

    总结来说,"Access-Control-Allow-Origin"是CORS机制的核心,它决定了跨域请求的权限。理解并正确使用这个响应头,可以帮助开发者构建安全、灵活的Web应用,同时,结合Chrome的开发者工具,能够有效地进行跨域问题的...

    Allow-Control-Allow- Origin.zip

    3. **CORS(Cross-Origin Resource Sharing)**:为了解决跨域限制,Web开发者可以使用CORS机制,通过在服务器端设置"Access-Control-Allow-Origin"响应头,允许特定或所有源的请求。 4. **"Access-Control-Allow-...

    Allow_CORS__Access-Control-Allow-Origin_0_1_1_0.zip

    标题 "Allow_CORS__Access-Control-Allow-Origin_0_1_1_0.zip" 提到的是一个与跨域资源共享(CORS)相关的压缩包文件。在Web开发中,跨域问题是一个常见的挑战,尤其是在使用Ajax进行异步数据请求时。描述中的 ...

    Access-Control-Allow-Origin 0.1.5.7z

    标题中的"Access-Control-Allow-Origin 0.1.5.7z"表明这是一个软件版本号为0.1.5的压缩包文件,与Web开发中的跨域资源共享(CORS)策略有关。`Access-Control-Allow-Origin`是HTTP响应头的一个字段,用于在服务器端...

    Allow-Control-Allow-Origin chrome

    标题中的"Allow-Control-Allow-Origin chrome"指的是在使用Google Chrome浏览器时,通过一款名为"Allow-Control-Allow-Origin"的插件来解决跨域问题。在Web开发中,跨域(Cross-Origin)是由于同源策略(Same-origin...

    Allow-Control-Allow-Origin_1_0_3_0.crx.zip

    Control-Allow-Origin_1_0_3_0.crx" 这个Chrome扩展可能的工作原理是,在浏览器内部注入一个或多个JavaScript脚本,这些脚本修改了页面的响应头,临时添加 "Access-Control-Allow-Origin",使得原本不允许的跨域请求...

Global site tag (gtag.js) - Google Analytics