【问题标题】:How do I handle a post request that returns text/html response?如何处理返回 text/html 响应的 post 请求?
【发布时间】:2021-05-27 06:40:23
【问题描述】:

我正在与一个供应商合作,该供应商公开了一个 API,我可以使用 multipart/form-data 内容类型主体向该 API 提交 POST 请求。我提供了三个参数并将它们发布到端点。响应是 text/html 类型,响应的主体是一个大的 html 页面,其中包含 CSS 和 JavaScript 资源以及这些资源的相对文件路径,就像这样...

<link href="/SelfServiceV3/css/site?v=UGJgWOWOr3HU-VqSuz-WTq16hygLTXMGIsn2PuMjStQ1" rel="stylesheet">

此资源只会加载到供应商的域,而不是我提出请求的域。 响应有一个 200 响应代码。

如何通过 Javascript 使用此 API?

我希望用户点击页面上的一个按钮,然后在后台通过 Javascript,所有三个参数都会自动从页面上的不同元素中获取,然后发送到这个 API,然后响应我希望用户登陆的 HTML 页面(API 返回的页面在 i-frame 或模式中不起作用)。 我无法使用任何类型的重定向,因为我没有通过响应提供 URL(除了需要将表单数据发布到它的 API 端点)。

【问题讨论】:

标签: javascript html redirect post httpresponse


【解决方案1】:

怎么样:

  function fetchHtml(data) {
    fetch('/some/url', {
      method: 'POST',
      body: data // your FormData
    })
        .then((response) => {
          return response.text();
        })
        .then((html) => {
          document.body.innerHTML = html
        });
  }

【讨论】:

  • 感谢您的回复。这很接近,但是因为页面上的 javascript、css 和图像是通过相对路径引用的(例如 ),该页面不会加载这些资源,因为它试图在我的域中找到它们,而不是文件实际所在的供应商域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2015-06-28
相关资源
最近更新 更多