交叉请求未正确 return 文件
Cross request does not return files correctly
我想通过代理脚本向我的后端服务器发送查询。但它 return 文件不正确。
public class HttpWebRequestRunner : IWebRequestRunner
{
public HttpWebResponse Run(string backendUri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(backendUri);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
return response;
}
}
我的后端服务器对 Internet 关闭,因此我向 Asp.Net Mvc 应用程序发送参数。并向后端服务器发送请求。
后端服务器正在为此请求returning 文件:http://10.0.2.1/Employee/CV/1445
在我的 mvc 控制器中我使用这个:
public class PersonController : Controller
{
public ActionResult GetCv(int id)
{
HttpWebResponse response = new HttpWebResponse();
HttpWebResponse webResponse = response.run("http://10.0.2.1/Employee/CV/1445");
context.HttpContext.Response.ContentType = wbResponse.ContentType;
webResponse.GetResponseStream().CopyTo(context.HttpContext.Response.OutputStream);
// write result...
}
}
现在
如果我从浏览器向后端发送请求 url http://10.0.2.1/Employee/CV/1445
它 returns 1445.pdf 文件
但是如果我像这样通过代理应用程序发送请求 http://localhost:22414/Person/GetCv/1445
此 return 是一个名为 file 但不是 pdf 扩展名的文件。
您还需要中继 Content-Disposition
HTTP header。
文件名在 header 信息中。 webResponse.Headers["Content-Disposition"]
。所以你必须这样使用:
context.HttpContext.Response.Headers.Set(
"Content-Disposition",
webResponse.Headers.Get("Content-Disposition"));
我想通过代理脚本向我的后端服务器发送查询。但它 return 文件不正确。
public class HttpWebRequestRunner : IWebRequestRunner
{
public HttpWebResponse Run(string backendUri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(backendUri);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
return response;
}
}
我的后端服务器对 Internet 关闭,因此我向 Asp.Net Mvc 应用程序发送参数。并向后端服务器发送请求。
后端服务器正在为此请求returning 文件:http://10.0.2.1/Employee/CV/1445
在我的 mvc 控制器中我使用这个:
public class PersonController : Controller
{
public ActionResult GetCv(int id)
{
HttpWebResponse response = new HttpWebResponse();
HttpWebResponse webResponse = response.run("http://10.0.2.1/Employee/CV/1445");
context.HttpContext.Response.ContentType = wbResponse.ContentType;
webResponse.GetResponseStream().CopyTo(context.HttpContext.Response.OutputStream);
// write result...
}
}
现在
如果我从浏览器向后端发送请求 url http://10.0.2.1/Employee/CV/1445
它 returns 1445.pdf 文件
但是如果我像这样通过代理应用程序发送请求 http://localhost:22414/Person/GetCv/1445
此 return 是一个名为 file 但不是 pdf 扩展名的文件。
您还需要中继 Content-Disposition
HTTP header。
文件名在 header 信息中。 webResponse.Headers["Content-Disposition"]
。所以你必须这样使用:
context.HttpContext.Response.Headers.Set(
"Content-Disposition",
webResponse.Headers.Get("Content-Disposition"));