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

JavaScript可以向任何域发出POST HTTP请求吗?,javascript,security,http,post,Javascript,Security,Http,Post,我知道可以从JavaScript从任何域加载任何类型的文档(不一定能够查看其内容),但它通常涉及常规的GET请求。关于POST呢 是否可以从JavaScript向任何域名发出HTTPPOST请求?(我对表格提交特别感兴趣。) 如果是,怎么做?根据附近问题«»的一些答案,您可以使用XMLHttpRequest,因为根据文档,也支持POST方法 上述w3.org文档中的示例代码: function log(message) { var client = new XMLHttpRequest(

我知道可以从JavaScript从任何域加载任何类型的文档(不一定能够查看其内容),但它通常涉及常规的
GET
请求。关于
POST

是否可以从JavaScript向任何域名发出HTTP
POST
请求?(我对表格提交特别感兴趣。)


如果是,怎么做?

根据附近问题«»的一些答案,您可以使用
XMLHttpRequest
,因为根据文档,也支持
POST
方法


上述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);
}
但是,为了使it能够处理对与您的域无关的域的
POST
请求(其中指定了完整的
http
https
URL,而不是
“/log”
),可能必须在目标服务器上支持并启用跨源资源共享,如所示


因此,看起来至少通过
XMLHttpRequest
,您无法通过
POST
请求提交表单(事实上,看起来即使
GET
请求也不会飞起来)。

“我知道可以从JavaScript从任何域加载任何类型的文档…”它是???您可以加载任何文档来代替现有文档:。此外,对于图像或iFrame之类的元素,我认为您也可以将
src
更改为任何位置。(好的,可能不是引用用户本地文件系统上的文件。)您需要在目标服务器上设置Acecss Control Allow Origin响应头。至少对于IE9是这样。@cnst:这个问题解决了请求新页面的问题。你当然能做到。但这并不是直接提出GET或POST请求。这只是告诉浏览者把你带到互联网上的其他地方,它使用GET请求来完成这一点。你需要澄清你的问题的意思。如果你说的是从JavaScript中加载,那就意味着你想获取任何要在你的程序中使用的文档,所以不,你不能只在GET或POST中使用任意域中的任意文档就这样做。我已经澄清了这个问题。对发出请求本身感兴趣,而不查看返回的内容相同源策略如何?目标需要允许使用CORS从不同域进行通信。此处不违反相同源策略。您的JavaScript无法在另一个域的上下文中执行,但是没有任何东西可以阻止它引用来自另一个域的内容。明确提到,“通常允许跨源写入。例如链接、重定向和表单订阅。某些很少使用的HTTP请求需要飞行前处理。”您的答案不是链接、重定向或表单。。。这是一个XHR请求。如果没有服务器使用标题的同意,当然不允许自动引用来自不同域的内容。因此,如果没有该域的明确同意,我不能从JavaScript向无关域提交表单?