JavaScript可以向任何域发送POST HTTP请求吗?

Can JavaScript do a POST HTTP request to any domain?

本文关键字:HTTP 请求 POST 可以向 任何域 JavaScript      更新时间:2023-09-26

我知道可以从JavaScript加载来自任何域的任何类型的文档(不必能够窥视其内容),但它通常涉及常规GET请求。POST呢?

是否有可能使HTTP POST请求从JavaScript到任何域名?(我对表单提交特别感兴趣。)

如果有,怎么做?

根据附近问题的一些答案,«JavaScript中的HTTP GET请求?»,您可以使用XMLHttpRequest,因为根据文档,也支持POST方法。

http://www.w3.org/TR/XMLHttpRequest/
https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest

来自上述w3.org文档的示例代码:

function log(message) {
  var client = new XMLHttpRequest();
  client.open("POST", "/log");
  client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
  client.send(message);
}

然而,似乎为了使它与POST请求一起工作,这些请求与您的域无关(而不是"/log",指定完整的httphttps URL), 跨域资源共享可能必须在目标服务器上支持和启用,如https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS#Simple_requests。

所以,看起来,至少通过XMLHttpRequest,你不能通过POST请求进行表单提交(事实上,看起来甚至GET请求也不会飞,要么)。