jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 通过HTTPS发出的POST请求导致错误403(禁止)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 jQuery fileDownload(由 John Culviner创建)来加载由JBoss服务器使用RESTEasy动态生成的DOCX文件.应用程序和文件位于同一个域中.

这适用于http GET提取的文档.

但是,在一种情况下,我必须使用http POST请求,因此我可以将额外的有效负载附加到请求.这也适用于我使用http的本地开发环境.但是,在生产中,服务器由httpS保护.那里的文件下载不起作用.在浏览器控制台中,我收到文档URL的错误403(禁止).

这是什么问题,我该如何解决?看起来浏览器无法访问资源,但我不确定这是客户端还是服务器问题.我是否必须在任何一方设置其他http标头?或者这是JBoss配置问题?

由于我无在本地重现问题,因此很难调试.

客户代码

var downloadUrl = '/MyApp/foobar/download';

var downloadConfiguration = {
    httpR_940_11845@ethod: "POST",data: JSON.Stringify($scope.payload),successCallBACk: onsuccess,failCallBACk: onError
};

$.fileDownload(downloadUrl,downloadConfiguration);

服务器代码

@POST
@Path("/download")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces("text/word")
public Response generateDocument(final InputStream request) throws Exception {
  // ...

  Response.ResponseBuilder builder = null;
  File file = createMyDocument();

  builder = Response.ok((Object)filE);
  builder.header("Content-Disposition",String.format("attachment; filename=\"%s.%s\"",FILename,EXTENSION));
  builder.header("Set-Cookie","fileDownload=true; path=/");

  return builder.build();
}

编辑:

我也尝试过设置其他http标头,但它没有帮助:

builder.header("x-frame-options","SAMEORIGIN");
builder.header("Access-Control-Allow-Origin","*");

编辑2:

我已经为web.xml添加一个Security Constraint用于下载URL,但它没有帮助:

<security-consTraint>
  <web-resource-collection>
    <web-resource-name>Foobar-Download</web-resource-name>
    <url-pattern>/foobar/download</url-pattern>
  </web-resource-collection>
  <auth-consTraint>
    <role-name>SOMEROLE</role-name>
  </auth-consTraint>
  <user-data-consTraint>
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-consTraint>
</security-consTraint>

编辑3:jQuery fileDownload插件使用带有隐藏表单的iframe进行下载.也许这会干扰httpS连接?某种CORS问题?

解决方法

你检查过服务器上的防火墙配置了吗?如果我说一些显而易见的东西,我很抱歉,但是,当你第一次向服务器提出申请并且它不是来自同一目录并且未设置为允许任何原点(允许*)时,您将收到错误.在第一次使用allow origin *之后,您可以从您的机器发出本地请求,然后服务器应该接受它.告诉我你是否得到了什么.
@H_404_53@

大佬总结

以上是大佬教程为你收集整理的jquery – 通过HTTPS发出的POST请求导致错误403(禁止)全部内容,希望文章能够帮你解决jquery – 通过HTTPS发出的POST请求导致错误403(禁止)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。