0

我正在尝试发送内容类型为 json 的跨域 POST 请求。我将服务器标头配置为接受源、标头等。如果我发出 GET 请求,它会成功,但是,如果我发出 POST 请求,则预检失败。

下面是网络通讯截图: http: //d.pr/i/JsM

编码:

jq.ajax({
            url: url,
            type: "POST",
            data: dataStr,
            dataType: "json",
            crossDomain: true,
            //processData: false,
            contentType: "application/json; charset=utf-8",
            xhrFields: {
                withCredentials: true
            },...

我不知所措的原因是因为GET请求成功了它们之间唯一的区别是GET请求不包括Access-Control-Request-Headers等请求中的标头。

更新:如果我将 dataType 更改为“text/plain”,它可以工作。我勒个去?

4

1 回答 1

0

请参阅:http ://www.html5rocks.com/en/tutorials/cors/ 。看看“来自 JQuery 的 CORS”部分,在代码注释中它说:

// The 'contentType' property sets the 'Content-Type' header.
// The JQuery default for this property is
// 'application/x-www-form-urlencoded; charset=UTF-8', which does not trigger
// a preflight. If you set this value to anything other than
// application/x-www-form-urlencoded, multipart/form-data, or text/plain,
// you will trigger a preflight request.
contentType: 'text/plain'
于 2014-05-28T07:22:21.597 回答