php解决前端访问后端接口跨域问题
第一种,就是在程序中添加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.com/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.com ServerAlias *.dev.com <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.***.com (或者这样加上一行) </Directory> OK,跨域问题搞定
学习时参考的网址:
. .