MooTools CORS请求与本机Javascript

MooTools CORS请求与本机Javascript,javascript,xmlhttprequest,request,cross-domain,mootools,Javascript,Xmlhttprequest,Request,Cross Domain,Mootools,我有以下代码: new Request.JSON({ method: 'POST', url: URL, /*URL TO ANOTHER DOMAIN*/ onSuccess: function(r){ callback(r); } }).post(data); 此代码不发送POST请求(仅限选项)。。。 请看下面的代码(它工作得很好): 编辑: 尝试:.setHeader('Content-Type','application/x-www-form-urlencod

我有以下代码:

new Request.JSON({
  method: 'POST',
  url: URL, /*URL TO ANOTHER DOMAIN*/
  onSuccess: function(r){
    callback(r);
  }
}).post(data);
此代码不发送POST请求(仅限选项)。。。 请看下面的代码(它工作得很好):

编辑

尝试:
.setHeader('Content-Type','application/x-www-form-urlencoded')
还是没什么。。。哪里会有问题

谢谢

您所说的(仅限选项)是什么意思?两个示例都发送POST请求,唯一的区别在于接受请求头

MooTools发送
Accept:application/json
,而native发送
Accept:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8


这可能会影响服务器的响应方式。

这是因为MooTools将一些额外的内容与请求头捆绑在一起

例如,如果您的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();    
这就是为什么您只看到飞行前的选项。它不喜欢你:)

您可以将
.htaccess
更改为也与
X-request-With
匹配,这可能是额外的“安全性”


请参阅一个工作示例-我不久前就这样做了,当时我想修复对请求的更改。

如果它发送一个选项请求,听起来像是一个,这表明您在跨站点请求中使用了一个非简单请求头。您的非Mootools代码集
内容类型:application/x-www-form-urlencoded
,但您的Mootools代码可能不会设置。请尝试在Mootools请求中设置选项
标题
。已尝试:。setHeader('Content-type','application/x-www-form-urlencoded');还是没什么…哪里出了问题?和往常一样回答得很好!谢谢。我不知道该如何感谢你;这很可能帮我省了几个小时的拔头发的时间。
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();