OK、私はこれを理解するために Fiddler をさらに掘り下げてきました.. IIS 8 サイトと IIS7 サイトに行くと、2 つの要求が送受信されていることがわかりました。私はまったく同じクライアントを使用してテストを行い、サーバーアドレスのみを変更しました..したがって、サーバーアドレスを除いてすべてが同じです。
質問: IIS8 に対して 2 つの要求が表示されるのはなぜですか? また、これを停止するにはどうすればよいですか?
IIS 7 サイトに送信すると、次のように表示されますが、パケットは 1 つだけです。 オプション /SERVER/api/messagetypeopt/97 HTTP/1.1 ホスト: (.net 4 - IIS7 サーバー) 接続: キープアライブ Access-Control-Request-Method: PUT 発信元: null ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/535.11 (Gecko のような KHTML) 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 キャッシュ制御: no-cache
HTTP/1.1 200 OK サーバー: Microsoft-IIS/7.0 X-Powered-By: ASP.NET 日付: 2013 年 5 月 20 日月曜日 13:31:04 GMT 接続: 閉じる Content-Length: 0
しかし、IIS 8 サイトにアクセスすると、パケットが表示されます。ただし、Ajax リクエストは 1 つだけです。Packet 1 OPTIONS /server/api/messagetypeopt/115 HTTP/1.1 Host: .NET 4.5 IIS 8 server Connection: keep-alive Access-Control-Request-Method: PUT Origin: null User-Agent: Mozilla/5.0 (Windows NT 6.1 ; WOW64) AppleWebKit/535.11 (Gecko のような KHTML) 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 キャッシュ制御: 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: * Date: Mon, 20 May 2013 13:26:30 GMT Connection: close Content-Length: 0
パケット 1 の直後にパケット 2 PUT /server/api/messagetypeopt/115 HTTP/1.1 Host: .NET 4.5 IIS 8 server Connection: keep-alive Content-Length: 84 Accept: / Origin: null User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (Gecko のような KHTML) 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 キャッシュ制御: no-cache
HTTP/1.1 405 Method Not Allowed キャッシュ制御: プライベート 許可: GET、HEAD、OPTIONS、TRACE コンテンツ タイプ: 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 Access-Control-Allow-Origin: * Date: Mon, 20 May 2013 13:26:30 GMT Connection: close Content-Length: 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');
}
});