Ajax提交跨域请求

当Ajax提交的请求为跨域的时候会提示错误:

已拦截跨源请求:同源策略禁止读取位于 http://****** 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

解决方法一:

使用jsonp进行请求

  $(document).ready(function () {
            $.ajax({
                type: "GET",//请求方式:GET  
                async: false,//是否异步:否  
                cache: false,//是否缓存:否  
                timeout: 200,//请求超时响应:200s  
                url: "http://****",//请求url  
                data: "",//请求参数  
                dataType: "jsonp",//数据类型:jsonp  
                crossDomain: true,//是否跨域:是  
                jsonp: "callback",//callback或者jsoncallback或者jsonpcallback;传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)  
                jsonpCallback: "callback",//自定义jsonp回调函数名称,可以随意起名,或者根据项目规范命名,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据;若自定义的函数名是js中的function会执行下面函数function  
                complete: function () {
                    //hideLoadingMsg(); // 数据获取完成后,需要做的事,此为隐藏读取数据的滚动条。  
                },
                success: function (json) {//请求成功:此处传回来的数据为:my({'msg': 'OK', 'code': 0, 'data': {'appinstall': '2000'}})  
                   
                },
                error: function () {//请求异常:网络断开或者  
                  
                }
            });
但是要注意服务器返回的值需要特定的格式 
my({'msg': 'OK', 'code': 0, 'data': {'appinstall': '2000'}}) 
不然会提示无法解析的错误.

json与jsonp的区别    点击打开链接


方法二:

在服务器端口的返回头中加入 Access-Control-Allow-Origin 

        $respArray=$this->get('promotion_service')->getcity();
        $response = new Response ( json_encode ( $respArray ), 200 );
        $response->headers->set ("Access-Control-Allow-Origin","*");//*代表允许所有的请求,可以换为制定的地址
        $response->headers->set ( 'Content-Type', 'application/json' );


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值