在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到。如果跨域请求被阻止,有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来,就介绍下解决同源策略不允许读取远程资源的问题。
今天就谈下远程字体跨域的问题。
直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:
第一种,就是在程序中添加HTTP头:
<meta http-equiv="Access-Control-Allow-Origin" content="*">
// PHP
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。
第二种,就是在服务器上,添加HTTP响应头。在这里,我们就以IIS6.0为例:
在被请求的网站上,设置HTTP头,添加“
//在被请求的网站上,设置HTTP头,添加
"Access-Control-Allow-Origin:*" //值为*或指定的域名。
第三种,使用JSONP格式,即在jQuery中ajax请求参数dataType:'JSONP':
<script>
$.ajax({
url:"http://map.oicqzone.com/gpsApi.php?lat=22.502412986242&lng=113.93832783228",
type:'GET',
dataType:'JSONP', // 处理Ajax跨域问题
success: function(data){
$('body').append( "Name: " + data );
</script>
一般完成以上工作,就可以了。网上还有说在被请求服务器根目录下创建:"crossdomain.xml"的文件。内容格式如下:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到。如果跨域请求被阻止,有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来,就介绍下解决同源策略不允许读取远程资源的问题。 今天就谈下远程字体跨域的问题。 直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:
在运行中我们有时会出错是因为我们违反了
同源策略
,这是一种
浏览器
所实施的安全措施,用于限制具有不同来源的文档之间的交互。页面的来源由其协议,主机和端口号定义。具有相同来源的
资源
可以相互完全访问。但是如果具有不相同的源将会拒绝访问。
http://www.a.com/a.js
http://www.b.com/a.js
这两个之间就不可以互相访问,因为域名的不相同
如果上面两个域名想互相访问就需要
跨域请求
,一般情况下同源政策规定:允许
跨源
写入,而不允许
跨源
读取
这意味着同源政策不会
阻止
将数据写入,只会
禁止
他们从域中
读取
数据, 或者对从其域收到的响应做任何事情。
跨域请求
的
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.
cors
.
Cors
Config...
已
拦截
跨源
请求
:
同源策略
禁止
读取
位于 http://192.168.43.207:8080/manager/login?name=hao&password=111 的
远程
资源
。(原因:
CORS
请求
未能成功)。
IE中可以正常运行,但Firefox报错,参考了官方文档(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/
CORS
/Err...
做前后分离的webapp开发的时候,出于一些原因往往需要将
浏览器
设置成支持跨域的模式,好在chrome
浏览器
就是支持可跨域的设置,网上也有很多chrome跨域设置教程。但是新版本的chrome
浏览器
提高了跨域设置的门槛,原来的
方法
不再适用了。下面笔者简单介绍一下新版本chrome的跨域设置
方法
。
版本号49之前的跨域设置
先介绍一下老
方法
,参考了一些网上的教程,其实直接在打开命令上加--dis...
1. 什么是跨域?
要了解什么是跨域,首先需要知道什么是
同源策略
。
同源策略
是由Netscape公司提出的一个注明的安全
策略
,所有支持JavaScript的
浏览器
都会使用这个
策略
。所谓同源是指,域名,协议,端口相同。当页面执行一个脚本时会检查访问的
资源
是否同源,如果非同源,那么在
请求
数据时,
浏览器
就会在控制台中抱一个异常,提示拒绝访问。
同源策略
一般又分为两种:
DOM
同源策略
:
禁止
对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的;
XmlHttpReq