我有一个Django视图,它返回HttpResponse一个特殊的MIME类型,使用户的浏览器"下载"该文件,而不是在浏览器中查看它.问题是响应将保存为的默认文件名是用户尝试访问的URL.
有没有办法在HttpResponse对象中包含默认文件名,还是必须重定向到不同的URL才能实现?
我正在尝试为我的一些webservice调用添加一些响应标头.我使用CXF 2.1.2和JAX-RS编写了我的Web服务.我需要返回一个对象,我还想在Response中添加一些标题. 如果不返回javax.ws.rs.core.Response对象,如何在响应中添加标头并仍然返回我的javabean?
我应该在对用户进行身份验证之后回复哪个HTTP状态代码,然后发现他们在注册后没有激活他们的帐户?
假设我有网址但不知道它会返回什么.我对该URL执行ajax调用javascript并获取内容.所以我测试它的内容类型并决定如何在我的网页中显示响应.如果它是json或html或任何其他文本,我会根据需要附加格式化的内容.
现在当内容类型是图像时,我得到图像的响应数据,这不是base64编码的.我当然需要在常规<img>标签中显示图像.这就是我被卡住的地方.
有没有办法从它的内容数据显示图像?
编辑
为了说清楚,听到的是我得到的回应:
"?PNG
IHDR??Nn?tEXtSoftwareAdobe ImageReadyq?e<fiTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:8E935AD20E206811822AA1DC23D37A5E" xmpMM:DocumentID="xmp.did:606C15E3DC2311E2A81EB553B5E13CE0" xmpMM:InstanceID="xmp.iid:606C15E2DC2311E2A81EB553B5E13CE0" xmp:CreatorTool="Adobe Photoshop CS5 Macintosh"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0E49679B0D20681192B0DE3AF6794EF0" stRef:documentID="xmp.did:8E935AD20E206811822AA1DC23D37A5E"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>?,??
3IDATx??R?JGI&m?????I?????K((MC7?nH????%???ef????0???u?? i%????:?`K?{????????u?>???(????(????(????(????(????(????(????(????(????(??((??((??((??((??(???&??b1???V??t???j?T*??e??R??t?????c0?&??|}yy????ns?|Cc?l???7k?????ju:?E?????")Ye?
W?U?Mu+"n?????3
????zzz*c??%????K?g4?&?T???z=_?????G???@??(?R??ng??^??????@?F???2G_??],t?Fb:?????^??????@? ??n?F#?`????|???<??_!??z???,????p}??U?????I}???
??h?6N??}||$hIY???p^IR???
(k*??D?c???)?????s?*l?e?n-}??o??f:??P?[.???KdP?be
?!9??,?h??!?r????|????>}??o?????W.??#?5?
?5IY)Zx?'?4?:88??P???????P?Z????czeM?51(()??4????0f?P?03???A?'???Y?5)he?xT??????|??eQ?$?j?jF???~AY?~_??????A??`????dOZ?=??f??%?{?}??Qi6?????+U,?4N??E??(?J9^s?m?e? ?#bQ6?5?D,??G????e???~??(?h3????*V
??
!??-V*???[???,???v?????2???? ?P?8?PeQ??d0?g.eM?I?'?????}?
w?lb?F??|??????G?Y/..^^^dl???nU0????hv????????????)m???????ec??z?yK??????n?9??????=?lT????4?q?'''??E)j??6q??b??:??T?U???F????%??M?? ? ?????,??7?6?6?????[ ??!;???7)x?9)?/?????S?*????????i??GAJ?~????jMh*?j?f?Y??UV?k8??G9r?v?^????O????\W 9}^V?q?`(??b)+?9???IVj??k?????????K?x?-???Z?Pe???h4?L?k?O8[*3??;?`???b???qAFi?(U??\.?C?6_??o(?Ri8???`P??k???P??&?|??#???o=?V??d?p?K???h?I N?)%fY?I?????LpWq??v"????*??4^G4bsn??J7h?^*?z?????{???V?????(+}#????=?$?(+?z!H?><<???SJD?¯e? ?Q6??xAxuu%rx?]v)?4?Y%?d?rK???z??x??Q?
:;?h??Iu?mZ?h??bC???????? F???g???B?AY??lje?Q]?\?V?y5???3?r??x?_qN????? h?W6t?S?<??{{t??h8?l??:? ??mE??Q?;Y*{??&?`0?x???????(V f|??Yˆ???qfH?Z??z??i\?S3?LP6?/?? h??n???????>??NP6??2LaA/VP?q!?2?Q6k?U??oWa?(??PK??+??V???(ky?0_?g??fIe????*;????t??A?W\)?qb????lb???*?ex??y#?ir\?4??bWs?:9?
]?m?????K??=???????_?)??K???O???R6?x??"J???}Q?????)+?^?ymS???????kP??B6??J}???/????+?COo???f?0?1??5OY??{O???????1Q6??P?????c??:?????G?>gd???0e??{??????L?73LY}?wsO??*??t??p?fe?*?\k?d?f*k5?o??a?jUx??F9?6G+e?e?R?n*???0??k??10??v6
?$`Vm?_w?v???pm?Y#0???*?T6J-?j??*U??&???????Z?X)kzU`?vyW">?9??|?)??]????F?;?e?E???*(??????g????%?}???,?,??,?,?&???/???Q???0??0e#?0??T*?lZ-?~!?@R??V5l??j???>Em?)p}}m?????m=??á??????^?g\?e??.b???Y$?U% ?v:?JX{?up^?8???]??@??_??Z??&??t<o{W??T*1?V???+??OOO??Wr????????L-????????~?kh?J?V???R?]??b?r???1?Bu_?p????zq?W2X$?o?}"?HYYS.??o??S(RK?V+??}\a?7?;?)_???A?d??1#Y$vl?{?????!???i????T?e?X?
(??((??((??((??((??((??((??((??((??((??(????(????(????(????(??`/?0a?????IEND?B`?"
Run Code Online (Sandbox Code Playgroud) 我的服务器中有一个"test.ini"文件,包含以下文本:
"[ALL_OFF]
[ALL_ON]
"
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过$http服务获取此文件内容,这是我的功能的一部分:
var params = { url: 'test.ini'};
$http(params).then(
function (APIResponse)
{
deferred.resolve(APIResponse.data);
},
function (APIResponse)
{
deferred.reject(APIResponse);
});
Run Code Online (Sandbox Code Playgroud)
此操作有一个Angular异常(SyntaxError:Unexpected token A).
我打开了Angular框架文件,我找到了这个例子:
因为文本文件内容以" [ " 开头并以" ] " 结束,Angular"think"是一个JSON文件.
这是Angular代码(1.2.23版本中的第7474行):
var defaults = this.defaults = {
// transform incoming response data
transformResponse: [function(data) {
if (isString(data)) {
// strip json vulnerability protection prefix
data = data.replace(PROTECTION_PREFIX, '');
if (JSON_START.test(data) && JSON_END.test(data))
data = fromJson(data);
}
return data;
}],
Run Code Online (Sandbox Code Playgroud)
我的问题:
如何强制角度 …
我有一些工作代码:
using (var client = new HttpClient())
{
HttpResponseMessage response;
response = client.PostAsync(Url, new StringContent(Request, Encoding.UTF8, header)).Result;
}
Run Code Online (Sandbox Code Playgroud)
//以上工作适用于简单的标题,例如"application/json"
如果我想要多个标题,我该怎么办?例如添加"myKey","foo"对和"Accept","image/foo1"
如果我尝试在.Result行之前添加以下内容,则intellisense会抱怨("标题"一词为红色,"无法解析符号'标题'":
client.Headers.Add("myKey", "foo");
client.Headers.Add("Accept", "image/foo1");
Run Code Online (Sandbox Code Playgroud) 设置Response.StatusCode = 404不提供IE8和Chrome下的内容?虽然我发现它很奇怪但它在Mozilla中有效!
做最简单的事情 - 使用空的Default.aspx页面清空asp.net Web应用程序项目.在Page_Load事件中使用以下内容:
protected void Page_Load( object sender, EventArgs e )
{
Response.StatusCode = 404;
}
Run Code Online (Sandbox Code Playgroud)
这有效地将当前请求的状态代码设置为404,毫无疑问.在IE8或Chrome下渲染时,或者也可能是其他一些浏览器 - 我还没有测试过,实际页面根本没有显示.这些浏览器显示其默认的404错误页面(不是默认的IIS自定义错误).IE8中的示例:
The webpage cannot be found
HTTP 404
Most likely causes:
•There might be a typing error in the address.
•If you clicked on a link, it may be out of date. ... and so on ...
Run Code Online (Sandbox Code Playgroud)
我真正想要做的是提供404错误页面,其中包含404错误代码,实际上会告诉浏览器或爬虫或者此页面不存在的任何人 - 不仅要显示一些带有状态消息的精美自定义错误消息200 OK .
使用fiddler表明我实际上真的在服务请求,但是浏览器完全无视它?!
我的问题 - 如何设置404状态代码并仍然呈现页面内容?示例 - http://www.intel.com/invalidpage.wow.使用fiddler显示此页面提供404状态代码.
好的,我已成功连接到远程服务器并收到HTTP/1.1 200 OK响应,响应被打包到HttpResponse对象中.现在我如何获取响应中的数据,特别是从服务器发送的JSON?
我有一个建立在Spring MVC之上的应用程序.
我想编写处理请求的简单代理,如下所示:
这是我到目前为止所得到的:
public void proxyRequest(HttpServletRequest request, HttpServletResponse response) {
try {
HttpUriRequest proxiedRequest = createHttpUriRequest(request);
HttpResponse proxiedResponse = httpClient.execute(proxiedRequest);
writeToResponse(proxiedResponse, response);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void writeToResponse(HttpResponse proxiedResponse, HttpServletResponse response){
for(Header header : proxiedResponse.getAllHeaders()){
response.addHeader(header.getName(), header.getValue());
}
OutputStream os = null;
InputStream is = null;
try {
is = proxiedResponse.getEntity().getContent();
os = response.getOutputStream();
IOUtils.copy(is, os);
} catch (IOException …Run Code Online (Sandbox Code Playgroud) 我需要在每个响应中添加标头.我打算在下面做
public class MyFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
filterChain.doFilter(request, response);
response.addHeader("Access-Control-Allow-Origin", "*");
}
}
Run Code Online (Sandbox Code Playgroud)
我想这样做之后filterChain.doFilter(request, response),一旦控制器处理它,我只是在返回客户端之前添加标题.这是对的吗 ?
但按照如何编写响应过滤器?
chain.doFilter返回之后,对响应采取任何措施都为时已晚.此时,整个响应已发送到客户端,您的代码无法访问它.
以上陈述对我来说不合适.我不能添加标题后filterChain.doFilter(request, response)?如果不是为什么?
我正在使用spring mvc.
httpresponse ×10
http ×3
java ×2
json ×2
spring-mvc ×2
android ×1
angularjs ×1
asp.net ×1
c# ×1
content-type ×1
cxf ×1
django ×1
filenames ×1
filter ×1
html ×1
http-proxy ×1
image ×1
javascript ×1
jax-rs ×1
parsing ×1
web-services ×1