【问题标题】:Can you make a cross subdomain form POST (non-javascript)?你可以制作一个跨子域表单POST(非javascript)吗?
【发布时间】:2011-06-26 14:25:28
【问题描述】:

我找到了很多关于 AJAX 调用的答案,但是我很难在不使用 Javascript 的情况下找到一个直接的 HTML 表单的答案。

你能把表格从foo.mydomain.com/somepage 发到bar.mydomain.com/someotherpage 吗?

【问题讨论】:

    标签: html forms http-post


    【解决方案1】:

    我找到了很多关于 AJAX 调用的答案,但是我很难找到一个不使用 Javascript 的直接 HTML 表单的答案。

    当然。您可以在任何地方发布表单,包括其他域、端口甚至协议。

    不能做的唯一事情就是将指向不同域、端口或协议的表单提交到 iframe 中,然后尝试使用 JavaScript 访问其内容。这被同源策略阻止(尽管我认为子域可以克服这一点)。除此之外,表格没有任何限制。

    【讨论】:

    • 如果服务器以允许跨域访问的特定标头响应 - Access-Control-Allow-Origin,则可以克服 any
    • 嗯...不过可能需要做一些重定向。如果您提交到单独的域,该域不需要处理请求并将您转到确认页面吗?
    • 好吧,假设您从 S3 存储桶或 example.com 的其他静态存储中提供静态内容,但您将表单提交到 api.example.com,其中可能有 API 网关,或一些 JSON REST API 服务器。处理那些禁用 JavaScript 的用户可能有点棘手。他们将使用浏览器和原始 JSON 输出访问 api.example.com/something。
    • @Costa 嗯。在这种情况下,当用户点击该端点时,您要么必须在响应标头(到感谢页面)中发出服务器端重定向,要么在原始表单上有两种事件:一种(普通操作 URL)对于非 JS 用户,该页面会为您进行 API 调用并在成功时说“谢谢”,而对于 Javascript 用户(通过操作onsubmit)。虽然我不确定这对于启用 JS 的用户如何工作?如果您只是将表单提交到 JSON REST API,您会看到启用或未启用 Javascript 的原始 JSON,不是吗?
    • @Pekka웃 这很有创意。我没有认为这些方面是分开的。我可能会忽略没有 JavaScript 的用户。可悲的是,这是很多开销。
    【解决方案2】:

    只需在action 属性中使用包含主机名即可。

    <form action="//bar.example.com/someotherpage" method="post">
    

    【讨论】:

    • // 是否意味着使用相同的协议,例如http 与 https?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2012-01-19
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多