星空网 > 软件开发 > ASP.net

关于Ajax跨域

  本人因工作需求,编写了一个测试页面,在页面填写完信息之后去向一个站点请求数据,然后返回结果!一开始是直接用Ajax在脚本中去访问,没有大碍(因为目标地址是本机上的一个网站),但是当站点去外部的网站时,发现结果不大对!于是问了度娘,得到的结果是Ajax跨域问题!关于这个问题就不多说了,这里给一个链接:<http://www.cnblogs.com/sunxucool/p/3433992.html>

看完之后觉得好厉害,可惜后台是java写的!而我是学.NET的!

问题有几个:1.虽然解决了跨域问题,但是请求的文件格式有限,jsonp

       2.后台代码需要修改(但是测试的站点不是我写的,不是我说改就能改)

 

于是又引出了另一个解决方案:用中间介质!

  方法:Ajax---->ashx------>目标地址

  解释:就是Ajax向自己写的一个ashx去请求,然后在ashx的C#代码中去向目标地址发送请求,然后返回结果

 

所以引出了两个东西叫:HttpWebRequest和HttpWebResponse

1:GET方式请求

   HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://fanyi.baidu.com/transcontent");//创建请求对象,如果有参数就写在url中

  

   using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())

            {

                using (StreamReader reader = new StreamReader(response.GetResponseStream()))

                {

                    responseData = reader.ReadToEnd().ToString();//这就是结果,至于怎么处理,自己看着办

                }

            }

 实际上就是使用HttpWebRequest创建一个请求对象,然后获取响应流,读取数据,如果有参数直接写在url中带过去(不要问我url中怎么带参数)

2:POST方式请求

  HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://fanyi.baidu.com/transcontent");

            Encoding encoding = Encoding.UTF8;

            string param = "ie=utf-8&source=txt&query=hello&t=1327829764203&token=8a7dcbacb3ed72cad9f3fb079809a127&from=auto&to=auto";//和Get不同是参数字符串要另外独立出来

            byte[] bs = Encoding.ASCII.GetBytes(param);//将参数字符串变成字节数组

            string responseData = String.Empty;           

            req.Method = "POST";//设置提交方式,默认是get

            req.ContentType = "application/x-www-form-urlencoded";//设置标头类型!!!!!很重要

            req.ContentLength = bs.Length;//字节数组的长度

            using (Stream reqStream = req.GetRequestStream())

            {

                reqStream.Write(bs, 0, bs.Length);//向请求流中写入参数字符串的字节数组!!!!POST方式提交参数的方法

                reqStream.Close();

            }

            using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())

            {

                using (StreamReader reader = new StreamReader(response.GetResponseStream(),encoding))

                {

                    responseData = reader.ReadToEnd().ToString();//获取到结果,可以根据响应的数据类型自己另外处理

                }

            }

解读就是:建立请求对象,设置提交方式,设置标头,获取请求流,写入参数字符串的字节数组,然后获取响应流




原标题:关于Ajax跨域

关键词:ajax

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

会员日前“大清扫”!亚马逊虚假好评再被盯上!:https://www.kjdsnews.com/a/1515305.html
《2023中重度游戏应用报告》:https://www.kjdsnews.com/a/1515306.html
外贸软件大宗行业管理难题解决关键策略:https://www.kjdsnews.com/a/1515307.html
以拉美视野,洞察多元新机遇:https://www.kjdsnews.com/a/1515308.html
外贸营销型网站搭建:外贸营销网站怎么建站优化:https://www.kjdsnews.com/a/1515309.html
Falabella平台义乌、厦门展收官,共创产业带出海新机遇!:https://www.kjdsnews.com/a/1515310.html
E-Bike品牌EMotorad获战略融资!:https://www.kjdsnews.com/a/1840707.html
Shopee订单量激增5倍多,越南成韩国美容品牌主要消费市场:https://www.kjdsnews.com/a/1840708.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流