Access-Control-Allow-Origin 跨域问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Access-Control-Allow-Origin 跨域问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3433字,纯文字阅读大概需要5分钟。
内容图文
同源指的是协议,端口,域名全部相同。
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
2.跨域
Web 浏览器具有一个称为相同站点源策略的安全策略,此策略可阻止网页访问另一个域中的数据。 网站通常会让其服务器在后端请求其他站点服务器中的内容,由此避开浏览器中的检查,从而绕开此策略。
3.前端跨域
通过前端方案绕开浏览器的安全策略,在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架(iframe)中的数据。
跨域解决办法:
1.浏览器目标添加命令,允许跨域访问(此种方案只适合个人):
第一种:--allow-file-access-from-files
第二种:--disable-web-security
2.后台配置web.xml过滤器(不推荐)
1 <filter> 2 <filter-name>CorsFilter</filter-name> 3 <filter-class>com.itxc.filter.CORSFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>CorsFilter</filter-name> 7 <url-pattern>/*</url-pattern> 8 </filter-mapping>View Code
3.配置Nginx代理服务器(推荐)
具体查看配置Nginx文章
4.JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。在被请求的Response header中加入header参数就可以实现ajax POST跨域访问了。
// 指定允许其他域名访问
header(‘Access-Control-Allow-Origin:*‘);
// 响应类型
header(‘Access-Control-Allow-Methods:POST‘);
// 响应头设置
header(‘Access-Control-Allow-Headers:x-requested-with,content-type‘);
Access-Control-Allow-Origin:* 表示允许任何域名跨域访问
如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名
5.通过iframe 方式跨域访问,具体不做详解。
总结:传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-Origin Resource Sharing)。IE8、Firefox 3.5 及其以后的版本、Chrome浏览器、Safari 4 等已经实现了 Cross-Origin Resource Sharing 规范,实现了跨域请求。在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息。
如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源。
Access-Control-Allow-Origin:http://www.phpddt.com.com,允许特定的域名访问
配置服务器配置信息:
1 <system.web> 2 <!--提供Web服务访问方式--> 3 <webServices> 4 <protocols> 5 <add name="HttpSoap"/> 6 <add name="HttpPost"/> 7 <add name="HttpGet"/> 8 <add name="Documentation"/> 9 </protocols> 10 </webServices> 11 </system.web>System.web
1 <configuration> 2 <system.webServer> 3 <httpProtocol> 4 <customHeaders> 5 <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/> 6 <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/> 7 <add name="Access-Control-Allow-Origin" value="*" /> //* 是任意网站可以跨域,加域名可以指定域名跨域。 8 </customHeaders> 9 </httpProtocol> 10 <modules> 11 <add name="MyHttpModule" type="WebServiceDemo.MyHttpModule"/> 12 </modules> 13 </system.webServer> 14 </configuration>Configuration
备注:
作者:Sam Jason
博客:http://www.cnblogs.com/zengming/
<欢迎有不同想法或见解的同学一起探讨,共同进步>
Access-Control-Allow-Origin 跨域问题
标签:安全 协议 个人 resource add 内容 跨域问题 close 一个
本文系统来源:http://www.cnblogs.com/zengming/p/7242643.html
内容总结
以上是互联网集市为您收集整理的Access-Control-Allow-Origin 跨域问题全部内容,希望文章能够帮你解决Access-Control-Allow-Origin 跨域问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。