第一种,就是在程序中添加HTTP头:
下面展示一些 内联代码片
。
如: Response.Headers.Add("Access-Control-Allow-Origin", "*");
// JSON
{
'Access-Control-Allow-Origin': '*',
}
// HTML
<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/gpsApi.php?lat=22.502412986242&lng=113.93832783228",
type:'GET',
dataType:'JSONP', // 处理Ajax跨域问题
success: function(data){
$('body').append( "Name: " + data );
}
});
</script>
学习的时候还参考了以下:
1.首先找到 httpd.conf 文件
找到 #LoadModule headers_module modules/mod_headers.so
把#注释符去掉(也有可能已经默认去掉了)
目的是开启apache头信息自定义模块
2.找到你的虚拟主机文件 注意是被跨域的网站的 具体内容是这样的文件
也有可能是别的样子的,但是<Directory> </Directory> 不变
<VirtualHost *:80>
DocumentRoot "E:/laragon/www/"
ServerName dev
ServerAlias *.dev
<Directory "E:/laragon/www/(你的本地地址)">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
然后在这段内容里面
<Directory "E:/laragon/www/(你的本地地址)">
AllowOverride All
Require all granted
#对所有域名开放
Header set Access-Control-Allow-Origin * (这样加上一行)
#对指定域名开放
Header set Access-Control-Allow-Origin http://www.*** (或者这样加上一行)
</Directory>
OK,跨域问题搞定
学习时参考的网址:
https://wwwblogs/PheonixHkbxoic/p/5760838.html.
https://wwwblogs/maidongdong/p/10832295.html.
更多推荐
php解决前端访问后端接口跨域问题
发布评论