zoukankan      html  css  js  c++  java
  • 关于php下开发的跨域问题总结(全)

    跨域问题介绍:

          在A网站中,我们希望使用Ajax来获得B网站中的特定内容。如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的。跨域访问违反了同源策略,同源策略的详细信息可以点击如下链接:Same-origin_policy; 
    总而言之,同源策略规定,浏览器的ajax只能访问跟它的HTML页面同源(相同域名或IP)的资源

    一.

     

    1.    Apache中在被请求的域名所在服务器中打开LoadModule headers_module modules/mod_headers.so 模块,也就是httpd.conf这个文件里面改动,同时在httpd.conf中的

    加上这句话,这个是允许所有域名进行跨域请求

    这样子是只允许这个域名对我进行跨域请求

    在框架内部可以进行:

    2.    如何使Nginx支持跨域呢? 1,进入nginx的html目录 vim ../crossdomain.xml 具体路径: /usr/local/nginx/html/crossdomain.xml 2,在crossdomain.xml中添加:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE cross-domain-policy SYSTEM"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
    <allow-access-from domain="*" />
    </cross-domain-policy>

    结果就是

    注意:默认/usr/local/nginx/html/crossdomain.xml 是不存在的.

    二.Jsonp的方式验证但是仅能用在于get方式的请求方式进行跨域请求

           1.前端的js或者jq请求jsonp的ajax:

    1.      <script type="text/javascript">    

    2.      $.ajax({    

    3.          url:"http://crossdomain.com/services.php",    

    4.          dataType:'jsonp',    

    5.          data:'',    

    6.          jsonp:'callback',    

    7.          success:function(result) {    

    8.              for(var i in result) {    

    9.                  alert(i+":"+result[i]);//循环输出a:1,b:2,etc.    

    10.             }    

    11.         },    

    12.         timeout:3000    

    13.     });    

    14. </script>  

    2.后端的验证:

    1.   function api_jsonp_encode($json)  

    2.      {  

    3.          if (!empty($_GET['callbak'])) {  

    4.              return $_GET['callbak'] . '(' . $json . ')'// jsonp  

    5.          }  

    6.          return $json// json  

    7.      }  

  • 相关阅读:
    [学习笔记]Senparc.CO2NET 缓存使用笔记
    [解决方案]Senparc.CO2NET 初始编译报错的问题
    [解决方案]NuGet打包报错: 'X' already has a dependency defined for 'Y'
    [经验分享]Windows系统下生成IOS证书
    struct redisServer’ has no member named ‘maxmemory’
    事务提交后执行异步方法
    restTemplate 401 Unauthorized: [no body]
    flyway不创建表
    启动kinaba并在后台运行
    springboot admin邮件报警
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257176.html
Copyright © 2011-2022 走看看