javascript - MooTools CORS 请求与 native Javascript

标签 javascript xmlhttprequest request cross-domain mootools

我有这个 MooTools 代码:

new Request.JSON({
  method: 'POST',
  url: URL, /*URL TO ANOTHER DOMAIN*/
  onSuccess: function(r){
    callback(r);
  }
}).post(data);

并且此代码不发送 POST 请求(仅限 OPTIONS)... 看看下面的代码(效果很好):

var http = null,
  params = Object.toQueryString(data);
try {
  http = new XMLHttpRequest();
} catch (e) {
  try {
    http = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
      http = null;
      alert("Your browser does not support AJAX!");
    }
  }
}
var url = URL;
http.onreadystatechange = function () {
  if (http.readyState == 4 && http.status == 200) {
    var jsonData = JSON.parse(http.responseText); /*OR EVAL*/
    callback(jsonData);
  }
};
http.open("POST", url);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(params);

编辑:

尝试过:.setHeader('Content-Type','application/x-www-form-urlencoded');
还是没有……哪里有问题?

谢谢!

最佳答案

这是因为 MooTools 将一些额外的东西与请求 header 捆绑在一起。

例如。如果你的 htaccess 说:

Header set Access-Control-Allow-Origin: *

您需要这样设计您的请求:

var foo = new Request({
    url: 'http://fragged.org/Epitome/example/data/',
    method: 'get',
    onComplete: function (data) {
        // returns an object with name and surname  
        new Element('div[html="{name} {surname}"]'.substitute(JSON.decode(data))).inject(document.body);
    }
});

// need to remove that or CORS will need to match it specifically
delete foo.headers['X-Requested-With'];
foo.send();    

这就是为什么您只在飞行前看到 OPTIONS 的原因。它不喜欢你:)

您可以更改 .htaccess 以也匹配 X-Requested-With,这可能是一些额外的“安全”。

参见 http://jsfiddle.net/7zUSu/1/对于一个工作示例 - 我不久前做过,当时我想将此更改更改为 Request https://github.com/mootools/mootools-core/issues/2381固定。

关于javascript - MooTools CORS 请求与 native Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445337/

相关文章:

node.js - 如何更改请求 header 限制

javascript - 在 Javascript 中捕获同源异常?

javascript - Google Analytics 统计数据错误下降了 97%

javascript - 实现包返回: Module util does not exist in the Haste module map

javascript - 将 JSON 数组中的数据放入 Javascript 数组

c# - 如何检查HTTP请求是否是外部的

php - Laravel 5 仅从请求中获取 GET 或 POST 参数

javascript - 通过 XHR 请求下载 PDF 文件

php - AJAX 功能在没有警报的情况下不起作用

javascript - 预检响应中的 Access-Control-Allow-Headers 不允许请求 header 字段 X-CSRFToken