解决ajax跨域问题的多种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//第一种方法使用jsonp的方式<br><br><script type="text/javascript" src="http://www.youxiaju.com/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax(
    {
        type:'get',
        url : 'http://www.youxiaju.com/validate.php?loginuser=lee&loginpass=123456',
        dataType : 'jsonp',
        jsonp:"jsoncallback",
        success  : function(data) {
            alert("用户名:"+ data.user +" 密码:"+ data.pass);
        },
        error : function() {
            alert('fail');
        }
    }
);
})
</script>

  

复制代码
<?php
header('Content-Type:text/html;Charset=utf-8');
$arr = array(
    "user" => $_GET['loginuser'],
    "pass" => $_GET['loginpass'],
    "name" => 'response'

);
echo $_GET['jsoncallback'] . "(".json_encode($arr).")";
复制代码

  第二种方式增加headr头

 假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,"跨域"也就以此由来。
  利用 CORS,http://www.test2.com 只需添加一个标头,就可以允许来自 http://www.test1.com 的请求,下图是我在PHP中的 hander() 设置,“*”号表示允许任何域向我们的服务端提交请求
     

  也可以设置指定的域名,如域名 http://www.test2.com ,那么就允许来自这个域名的请求

     
     
  当前我设置的header为“*”,任意一个请求过来之后服务端我们都可以进行处理&响应,那么在调试工具中可以看到其头信息设置,其中见红框中有一项信息是“Access-Control-Allow-Origin:* ”,表示我们已经启用CORS,如下图。
  PS:由于demo都在我厂的两台测试机间完成,外网也不能访问,所以在这就不提供demo了,见谅
     
   简单的一个header设置,一个支持跨域&POST请求的server就完成了:)
 
  当然,如果没有开启CORS必定失败的啦,如下图:
  

 

posted @   麦田守望者~  阅读(20259)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2014-05-07 ASP.NET C# 获取当前日期 时间 年 月 日 时 分 秒
点击右上角即可分享
微信分享提示