当我尝试用JSON做POST请求时,我遇到了一个关于头的问题
代码如下:
$.ajax({
type: "POST",
url: url,
data: jsonData,
dataType: 'json',
beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Accept","application/json");
},
error: function(){
alert("Fail");
},
success: function(){
alert("Success");
}
});这是Firebug显示的请求头。
OPTIONS /path HTTP/1.1
Host: 192.168.15.109:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 FirePHP/0.7.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
x-insight: activate
Pragma: no-cache
Cache-Control: no-cache和响应头:
HTTP/1.1 204 No Content
Date: Thu, 24 May 2012 19:17:01 GMT
Allow: OPTIONS,POST正如您所看到的,头部与我指定的头部不匹配,但是当我使用CURL时,头部是这样的:
POST /path HTTP/1.1
User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2
Host: localhost:8080
Accept: */*
Content-Type: application/json
Content-Length: 5对此有什么想法或解决方案吗?
我还修改了JSON源,以设置JQuery发送的头部的默认值,但不起作用。
发布于 2012-05-25 23:15:41
实际上,这是一个跨域的问题,我将我的URL定义为一个IP,所以浏览器将其解释为跨域请求。
谢谢你所做的一切!
发布于 2012-05-25 04:14:52
看起来像是同源的政策问题。使用dataType='jsonp'应该可以,但这可能需要其他更改。
有关更深入的解释,请参阅https://developer.mozilla.org/en/http_access_control。
https://stackoverflow.com/questions/10744326
复制相似问题