jQuery $.ajax()通过本地服务器访问到远程服务器,解决远程问题。
来源:互联网 发布:懒人js特效 编辑:程序博客网 时间:2024/05/20 16:33
$.ajax()是不能直接在自己的url属性中直接访问远程服务器的。
解决办法:
1.在$.ajax()的data:{}中写入要远程访问的服务器地址,作为参数数据传递到本地服务器;
2.在$.ajax()的url写入本地服务器;
3.通过本地服务器file_get_contents访问到远程服务器。
一、ajaxRemoteYes.html对ajax进行本地服务器请求:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>$.ajax解决跨域问题</title> <script src="../jquery-3.0.0.min.js"></script></head><body></body><script> $(function () { function postInfo() { $.ajax({ //访问服务器。从本地服务器跳转到远程访问的服务器 url: "ajax_post_fileGetContents.php", type: "post", data: { //远程访问服务器的地址,以参数方式传递。 "url": "http://192.168.4.101:90/PHPStudy4/server.php", "username": "admin", "password": "admin" }, success: function (data) { var result = eval("(" + data + ")"); console.log(result); console.log(result.code); } }); } window.onload = postInfo(); });</script></html>
2.ajax_post_fileGetContents.php本地服务器接收ajax请求,并远程访问,接收远程数据返回给ajax。
<?php/** * Created by PhpStorm. * User: 洋 汪 * Date: 2016/7/20 * Time: 20:00 */header("Content-type:text/html;charset=utf-8");try { if ($_SERVER["REQUEST_METHOD"] == "POST") { //判断post的值是否存在 if (isset($_POST["url"]) && isset($_POST["username"]) && isset($_POST["password"])) { //传递数据参数,以数组形式。 $result = postTrans($_POST["url"], array("username" => $_POST["username"], "password" => $_POST["password"])); //注意返回的内容为什么 echo $result; } else { throw new Exception("数据不完整!!!"); } } else { throw new Exception("不是POST请求!!!"); }} catch (Exception $e) { echo json_encode(array("msg" => $e->getMessage()));}//传递过来的参数,以数组形式$data。function postTrans($url, $data){ //发送到服务器之前应该如何对数据进行编码 //POST的4中编码格式: //1.(默认)application/x-www-form-urlencoded //2.multipart/form-data(上传文件时候) // 3.application/json // 4.text/xml //http_build_query()生成URL-encode之后的请求字符串。 $content = http_build_query($data); $requestPost = array( "http" => array( "header" => "Content-Type:application/x-www-form-urlencoded\r\n" . "Content-Length:" . strlen($content) . "\r\n" . "User-Agent:MyAgent/1.0\r\n", "method" => "POST", "content" => $content ) ); //转化为计算机的二进制流 $context = stream_context_create($requestPost); //进行跨域访问 $result = file_get_contents($url, false, $context, -1, 40000); //注意返回的内容为什么 return $result;}//echo postTrans("http://192.168.4.101:90/PHPStudy4/server.php", array("username" => "admin", "password" => "admin"));?>
1 0
- jQuery $.ajax()通过本地服务器访问到远程服务器,解决远程问题。
- 通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted
- iptables案例:通过本地服务器转发访问远程数据库
- 注册远程服务器到本地后以别名访问
- C#访问远程服务器共享目录下载文件到本地
- jQuery $.ajax()直接远程跨域访问服务器报错
- Ubuntu下本地ipython notebook通过ssh远程访问远程服务器
- 通过ssh远程到服务器,解决vim不能复制粘贴的问题
- 使用本地wamp服务器解决ajax访问本地文件失败问题
- 如何通过域名访问远程SQLSERVER服务器
- 通过mysql命令行远程访问服务器
- 远程图片自动保存到本地服务器
- 通过travis部署代码到远程服务器
- laravel5.0 view层 解决本地服务器和远程服务器网站路径问题
- 从远程服务器下载文件到本地服务器
- 远程连接服务器时,加载本地的硬盘到服务器
- shell脚本备份本地服务器的文件到远程服务器
- 本地安装linux服务器,并且连接到远程服务器
- POJ 1328Radar Installation
- Linux下接收串口数据0x0d变0X0a问题
- 在屏幕中显示下拉表框
- 010-字符个数统计
- 递归打印一个数所有加和的方式
- jQuery $.ajax()通过本地服务器访问到远程服务器,解决远程问题。
- Spark中使用Java编程的常用方法
- 151. Reverse Words in a String
- 织梦CMS5.7版自动给图片添加alt属性的方法
- hdu1885Key Task (BFS+状态压缩)
- JAVA学习总结二十七
- 说文解字(二)
- css3 动画
- 织梦DEDECMS教程:去除列表页文章标题加粗标签