c# .net 后台的httpwebrequest方法可以跨域访问吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# .net 后台的httpwebrequest方法可以跨域访问吗?相关的知识,希望对你有一定的参考价值。

具体代码如下:
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

string URL = "www.xxx.com";
   public void sendPost(string urlArgs,HttpContext context)
   
       //context.Request["args"]
       System.Net.WebClient wCient = new System.Net.WebClient();
       wCient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
       byte[] postData = System.Text.Encoding.ASCII.GetBytes("id=" + urlArgs);

       byte[] responseData = wCient.UploadData(URL, "POST", postData);

       string returnStr = System.Text.Encoding.UTF8.GetString(responseData);//返回接受的数据 

       context.Response.ContentType = "text/plain";
       context.Response.Write(returnStr);
   

除了上面的方法还有可以使用JSONP来实现,具体应用JSONP实现Json数据跨域调用,需要服务器端与客户端的合作完成。关于JSONP的具体使用方式,网上有很多相关的资料可以参考。这里就暂时做个记录,以后用到的话再具体分析。

参考技术A “跨域”是针对前端浏览器而言,A域的页面里想访问B域里的资源(IMG、JS、CSS、AJAX等等)叫做“跨域”。浏览器出于安全目的的考虑,默认禁止了AJAX跨域。

也就是说,AJAX跨域被阻止是浏览器本身造成的,并不是后端引发的(后端判断Referer那不叫阻止跨域)。

而且后端不存在什么“A域里的页面”,何来“跨域”?本回答被提问者采纳

C# HttpWebRequest 绝技

get方法

 

public static string GetUrltoHtml(string Url,string type)

{

try

{

System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);

// Get the response instance.

System.Net.WebResponse wResp = wReq.GetResponse();

System.IO.Stream respStream = wResp.GetResponseStream();

// Dim reader As StreamReader = New StreamReader(respStream)

using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
{
return reader.ReadToEnd();
}

}

catch (System.Exception ex)

{

//errorMsg = ex.Message;

}

return "";

}

 

post方法

 

///<summary>

///采用https协议访问网络

///</summary>

///<param name="URL">url地址</param>

///<param name="strPostdata">发送的数据</param>

///<returns></returns>

public string OpenReadWithHttps(string URL, string strPostdata, string strEncoding)

{

Encoding encoding = Encoding.Default;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

request.Method = "post";

request.Accept = "text/html, application/xhtml+xml, */*";

request.ContentType = "application/x-www-form-urlencoded";

byte[] buffer = encoding.GetBytes(strPostdata);

request.ContentLength = buffer.Length;

request.GetRequestStream().Write(buffer, 0, buffer.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

using( StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding(strEncoding)))
{

return reader.ReadToEnd();
}

}

 

以上是关于c# .net 后台的httpwebrequest方法可以跨域访问吗?的主要内容,如果未能解决你的问题,请参考以下文章

C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上

C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上

C# HttpWebRequest 绝技

急急急!C#中winform发送 HttpWebRequest请求,不能连续发送

C#利用HttpWebRequest进行post请求的示例(HTTPS)

C#利用HttpWebRequest进行post请求的示例(HTTPS)