好的,我一直在深入研究 Fiddler 以深入了解这一点。事实证明,当我访问 IIS 8 站点与 IIS7 站点时,正在发送/接收 2 个请求。我已经使用完全相同的客户端完成了测试,并且只更改了服务器地址。所以除了服务器地址之外,一切都是一样的。
问题:为什么我看到 2 个对 IIS8 的请求,我该如何阻止它?
当我发送到 IIS 7 站点时——这就是我所看到的——只有一个数据包。 选项 /SERVER/api/messagetypeopt/97 HTTP/1.1 主机:(.net 4 - IIS7 服务器) 连接:keep-alive 访问控制请求方法:PUT 来源:null 用户代理:Mozilla/5.0(Windows NT 6.1 ; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.33 Safari/535.11 Access-Control-Request-Headers: accept, origin, content-type Accept: / Accept-Encoding: gzip,deflate,sdch Accept-Language : en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Cache-Control: no-cache
HTTP/1.1 200 OK 服务器:Microsoft-IIS/7.0 X-Powered-By:ASP.NET 日期:星期一,2013 年 5 月 20 日 13:31:04 GMT 连接:关闭 内容长度:0
但是当我访问 IIS 8 站点时,我看到了数据包。!!我只做一个ajax请求!数据包 1 选项 /server/api/messagetypeopt/115 HTTP/1.1 主机:.NET 4.5 IIS 8 服务器连接:keep-alive 访问控制请求方法:PUT 来源:null 用户代理:Mozilla/5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.33 Safari/535.11 Access-Control-Request-Headers: accept, origin, content-type Accept: / Accept-Encoding: gzip,deflate,sdch Accept-Language : en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Cache-Control: no-cache
HTTP/1.1 200 OK 服务器:Microsoft-IIS/8.0 X-Powered-By:ASP.NET Access-Control-Allow-Headers:Content-Type、Accept、X-Requested-With、x-csrftoken Access-Control-Allow-方法:GET、POST、OPTIONS、PUT Access-Control-Allow-Origin:* 日期:星期一,2013 年 5 月 20 日 13:26:30 GMT 连接:关闭 Content-Length:0
数据包 2 紧跟数据包 1 PUT /server/api/messagetypeopt/115 HTTP/1.1 主机:.NET 4.5 IIS 8 服务器连接:keep-alive 内容长度:84 接受:/ 来源:null 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.33 Safari/535.11 Content-Type: application/json;charset=UTF-8 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Cache-Control: no-cache
HTTP/1.1 405 Method Not Allowed Cache-Control: private Allow: GET, HEAD, OPTIONS, TRACE Content-Type: text/html; charset=utf-8 服务器:Microsoft-IIS/8.0 X-Powered-By:ASP.NET Access-Control-Allow-Headers:Content-Type、Accept、X-Requested-With、x-csrftoken Access-Control-Allow-方法:GET、POST、OPTIONS、PUT 访问控制允许来源:* 日期:星期一,2013 年 5 月 20 日 13:26:30 GMT 连接:关闭内容长度:5332
为了完整起见,我添加了执行调用的 javascript 代码..这是从不同的域到服务器完成的(实际上来自我的本地 PC)
var mesType = {
MessageTypeID: mID,
typeName: mType,
OptIns:isChecked,
SenderID: SENDER_ID,
BranchID: CURRENT_BRANCH
};
try {
JSON.stringify(mesType);
}
catch (ext) {
alert("error on creating json object");
}
// PUT THIS BACK IN!! to get optIns
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
$.mobile.loading('show');
$.ajax({
url: MYSERVERNAME + 'api/messagetypeopt/' + mID,
type: 'PUT',
data: JSON.stringify(mesType),
contentType: "application/json;charset=utf-8",
jsonp: 'callback',
crossDomain: true,
success: function (data) {
// WriteResponse(data);
//alert('updated database for :' + mType + '=' + data);
},
error: function (x, y, z) {
if (inApp == 1)
{
alert('THere was an error updating the server' + x + '\n' + y + '\n' + z);
}
},
complete: function (a, b) {
//alert('complete:' + a + '\n' + b);
$.mobile.loading('hide');
}
});