php+ajax简单实现跨域(http+https)请求调用

当一个网站 a站 需要调用另一个网站 b站 列表文章时

比如:www.a123.com 调用 www.b456.com 文章

在 a站 建立php文件获取 b站 资源文章到本地后,再传递a站前端

在网站 b456 下Doc文件为

<ul class="ls_wz">
<li><a href="#" target="_blank" title="title1" >内容1</a><span>[1970-01-01]</span></li>
<li><a href="#" target="_blank" title="title2" >内容2</a><span>[1970-01-01]</span></li>
<li><a href="#" target="_blank" title="title3" >内容3</a><span>[1970-01-01]</span></li>
</ul>

在网站 a123 根目录(随意)下建立

a .php 文件:

 <?php
//获取文中传递参数
//$data[‘title‘]=$_GET[‘title‘];
// $data[‘link‘]=$_GET[‘link‘];
// $data[‘pubDate‘]=$_GET[‘pubDate‘];
  $data[‘callback‘]=$_GET[‘callback‘];//尤为重要模拟跨callback
 //$data = array(‘title‘=>title,‘link‘=>link,‘pubData‘=>pubData,‘callback‘=>callback);
   //$dataToJson = json_encode($data);
    //var_dump($data);
   $url="http://www.b456.com/b.php";//B站请求地址
   $postdata = http_build_query($data);
     $opts = array(
       ‘http‘=>array(
       ‘method‘=>"GET",
       ‘timeout‘=>60,
     )
   );
   $context = stream_context_create($opts);
   $result = file_get_contents($url."?".$postdata, false, $context);
   echo  $result;
   //var_dump($result);
 ?>

a.html 文件:

<script type="text/javascript" src="js/jquery.min.js"></script>
<div id="zd" class="ls_wz" style="height:144px; overflow:hidden">
</div>
           <script>
            $(function() {
                var url =  ‘http://www.a123.com/a.php‘;
                $.ajax({
                    type: "get",
                    url: url,
                    async: false,
                    //dataType:‘jsonp‘,
                    success: function (data) {
                        var html = data;
                        //html += ‘<p class="more"><a target="_blank" href="#">更多+</a></p>‘;
                        $("#zd").html(html);
                        //alert(‘#zd‘);
                    }
                })
            })
        </script>
<style>
/*css*/
.ls_wz{ float: left;height:144px;overflow:hidden;}
.ls_wz li{ list-style:none; line-height:23px; padding: 0 8px; font-size:12px; width:320px; padding-left:12px;
     overflow:hidden;white-space: nowrap;text-overflow: ellipsis;}
.ls_wz li a {word-break: keep-all;white-space: nowrap;display: inline-block;width: 320px;overflow: hidden;text-decoration:none;
    text-overflow: ellipsis;}
.ls_wz li a:hover{color:#C30000; text-decoration:underline; }
.ls_wz li span{ display:none;}
</style>

还有一种情况就是,当遇到

http 和 https 通过认证验证的跨域请求调用:

header(‘Content-Type: text/html;charset=utf-8‘);
header(‘Access-Control-Allow-Origin: *‘); //指定访问网站请求
header(‘Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE‘); // 允许请求的类型
header(‘Access-Control-Allow-Credentials: true‘); // 设置是否允许发送 cookies
header(‘Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin‘); // 设置允许自定义请求头的字段

当然了,不希望别人访问当前的文件:

//禁止访问当前文件
$fromurl="http://localhost/"; //跳转到这个地址。
if( $_SERVER[‘HTTP_REFERER‘] == "" )
{
header("Location:".$fromurl); exit;
}

原文地址:https://www.cnblogs.com/chervehong/p/10294367.html

时间: 2024-10-04 22:10:25

php+ajax简单实现跨域(http+https)请求调用的相关文章

中止请求和超时 跨域的HTTP请求 认证方式 JSONP

中止请求和超时 一个栗子在上传多少秒以后直接终止请求 // 发起HTTP GEt请求获取指定URl的内容 // 如果响应成功到达,将会传入responseText给回调函数 // 如果响应在timeout毫秒内没有到达,将会中止这个请求 function timedGetText(url, timeout, callback) { var request = new XMLHttpRequest(); // 创建新请求 var timedout = false; // 是否超时,设置标志 //

最简单实现跨域的方法----使用nginx反向代理

原文: http://blog.csdn.net/shendl/article/details/48443299 什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制. 所谓同源是指,域名,协议,端口相同.浏览器执行javascript脚本时,会检查这个脚本属于那个页面,如果不是同源页面,就不会被执行. 同源策略的目的,是防止黑客做一些做奸犯科的勾当.比如说,如果一个银行的一个应用允许用户上传网页,如果没有同源策略,黑客

PHP AJAX JSONP实现跨域请求使用实例

在之前我写过“php返回json数据简单实例”,“php返回json数据中文显示的问题”和“在PHP语言中使用JSON和将json还原成数组”.有兴趣的童鞋可以看看 今天我写的是PHP AJAX JSONP使用的实例.不清楚jsonp是什么的请自己搜索 实例1 test.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title

js中ajax如何解决跨域请求

js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操作. 跨域指的协议.域名.端口 有一个不同的情况下都是跨域 例:在本站点请求外站的数据是不允许的 //在本站点请求外站点的资源是不允许的 $(function () { $.ajax({ url: "http://127.0.0.1:14847/Web/jsonp.js", success

妥善的ajax跨域提交post请求的解决方案,结合PHP与jquery

开发背景: 在开发中采用了一个新的架构,将大部分客户的留言功能集成到一个公共API提交保存,采用不同的用户名区分,供客户查询自己网站的留言,这样节约了客户网站的资源,也提升了维护性. 那么在提交时不能采用直接的post提交,否则会产生跳转,使访客混乱,所以采用ajax提交留言内容至公共服务器:http://wx.igooda.cn/index.php/messagesave,但尝试后发现不能提交post请求,百度后查询结果是跨域只能是get请求,这对留言内容多的来说,是不可行的.还有一种解决方案

笔记-Ajax[4]-JSONP跨域获取数据。

JS的跨域:跨域名获取数据,a域名获取b域名中的数据. 解决跨域获取数据的方法也叫JSONP(JSON and Padding) JSONP方法: 1:服务器代理:XMLHttpRequest代理文件 2:script标签:jsonp(常用);//利用script标签的src引入外部文件的功能,src能够引入任何的文件的类型 3:location.hash方式:iframe 4:window.name方式 5:flash方式 6:html5的postMessage方式 例子:百度输入数据下拉框提

实现跨域iframe接口方法调用 简单介绍

实现跨域iframe接口方法调用 简单介绍: 页面a.html域名为www.a.com,嵌入页面http://www.b.com/b.html. b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限. 下面就介绍一下如何如何解决此问题,需要的朋友可以做一下参考. 一.cross.js代码如下: (function(global){ global.Cross = { signalHandler: {}, on: function(signal, func){ this

跨域发送HTTP请求详解

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述几种跨域发HTTP请求的几种方法,POST请求,GET请求 目录: 一,采用JsonP的方式(只能是GET) 二,采用CROS的方式(需要在接收的一端也有配置) 三,采用form表单的方式(有些时候会存在问题,一会详细说明) 四,采用代理网站帮忙转(不推荐,不安全,性能低,不做解释) 五,后台JAVA后端通过net方式发送 一,jsonP的方式: $.ajax({ url: "http://lo

记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也是我开发的,因此我将域名a加到了该服务的HTTP响应结构的头文件里,这样就允许了域名a上的JavaScript代码用AJAX访问域名b的服务. 域名b上的服务是一个Servlet,允许域名a跨域访问的代码就一行: protected void doGet(HttpServletRequest req