c#后台跨域_当jsonp无法解决跨域问题时,后台(C#)模拟提交http请求

当jsonp无法解决跨域问题时,后台(C#)模拟提交http请求

1.尝试用jsonp解决跨域的问题

今天用ajax去请求了某网站的接口,很现实,需要解决跨域问题!

我知道jsonp可以解决跨域问题,但是偏偏这个接口不行,请求是成功的,但返回结果时不进success!

因为进了error了,alert了一下,结果是readyState:4,status:200,statusText:"success"

原因:jsonp返回的结果的格式应是:success_jsonpCallback({"id":"123a","age":23,"name":"amy"});

而接口返回的就是一个json,但某网站的接口我是没办法拼装服务器返回结果的。

2.ajax调用服务器方法,后台模拟http请求

上面的问题,我表示无奈,我想到了一个办法,曲线救国,在服务器端用http模拟请求这个接口,就没有跨域问题。

但是产生了一个新的问题,返回的结果是乱码,不管怎么测试,更改编码格式,结果还是乱码。我用在线http模拟请求和工具去模拟,都是正常的。这让我意识到,还是编码那里出问题了。

后来找资料,终于在博客园找到了答案。

原因是:服务器在响应的时候用了压缩算法,而我在读取的时候还没解压,所以不管用什么编码,最后还是乱码的,解压后,终于得到了正确的json数据。以下是解压的代码

Stream myResponseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(),System.IO.Compression.CompressionMode.Decompress);press);

3.什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

?

作者:chenkj

简介:暂无

原文链接:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值