Mozilla自己的specification说简单的GET
或POST
应该是原生的CORS而没有预检,但到目前为止,我所做的每次POST
尝试都产生{{1}标头出去了。当我从OPTIONS
更改它以获取代码时立即发送一个正确的POST
请求,以便跨站点部分正常工作。
这是我在firefox中所做的一个简洁的样本:
GET
以下是我在chrome和IE中的工作原理:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var invocation = new XMLHttpRequest();
if (invocation) {
invocation.open('POST', destinationUrl, true);
//tried with and without this line
//invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
invocation.onreadystatechange = (function Handler() {
if (invocation.readyState == 4)
alert('Request made');
});
invocation.send(/* tried with and without data*/);
}
答案 0 :(得分:1)
我有同样的问题
https://developer.mozilla.org/En/HTTP_Access_Control
说enctype必须是text / plain或者你需要使用Fx4 + 必须正确设置所有访问标头
答案 1 :(得分:0)
好吧,我不知道所有内容类型实际上有什么用,但text/plain
在所有3个浏览器上都有效:
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
contentType: 'text/plain'
};
var postData={ 'anArray': theArray, 'token': token };
destination.data=JSON.stringify(postData);
$jq.ajax(destination);
然而到目前为止,我还没有弄清楚除了运行成功方法之外什么阻止了执行任何操作,即使返回505代码也是如此。添加Access-Control-Allow-Origin: *
的响应标头解决了浏览器不想读取返回数据的问题。