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();