これがコーディングの問題なのか、サーバーのセットアップの問題なのかわかりません...
実稼働サイトで、InternetExplorer10に固有の問題が発生しました。
同じドメインのWebサービスに対してajaxPOSTを実行するjQueryを使用していますが、IE10では401応答が返され、IE9は完全に正常に機能します。私たちのサイトの別の領域にコードをミラーリングしており、IE10では完全に正常に機能していることを述べておく必要があります。2つの領域の唯一の違いは、一方がサブドメインの下にあり、もう一方がルートレベルにあることです。www.my1stdomain.comとportal.my2nddomain.com
これらのサーバー上のディレクトリ構造は次のとおりです。
\my1stdomain\webservice\name\service.aspx
\portal\webservice\name\service.aspx
\portal\
とフォルダーの中に\my1stdomain\
、ajax呼び出しを行うページがあります。両方のページは同じです。
$.ajax({
type: 'POST',
url: '/webservice/name/service.aspx/function',
cache: false,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: '{ "json": "data" }',
success: function() {
},
error: function() {
}
});
サーバー側の両方のフォルダーでアクセス許可が同じであることを確認しました。<meta http-equiv="X-UA-Compatible" value="IE=9">
互換表示を強制するための回避策の修正を適用しました(IEを互換モードにすると問題が修正されます)。これはWindows7のIE10で機能しているようですが、Windows8のIE10でも同じ問題が発生します。これらのページは、ヘッダーが含まれているクラシックaspであり、他のメタタグは使用されていません。Doctypeは<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//" "http://www.w3.org/TR/html4/loose.dtd">
、ポータルページおよび<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
メインドメインで指定されています。
UPDATE1
サーバーでMicrosoftNetworkMonitor 3.4を使用して、要求をキャプチャしました。次のフィルターを使用して401をキャプチャしました。
Property.HttpStatusCode.StringToNumber == 401
これが返答でした
- Http: Response, HTTP/1.1, Status: Unauthorized, URL: /webservice/name/service.aspx/function Using Multiple Authetication Methods, see frame details
ProtocolVersion: HTTP/1.1
StatusCode: 401, Unauthorized
Reason: Unauthorized
- ContentType: application/json; charset=utf-8
- MediaType: application/json; charset=utf-8
MainType: application/json
charset: utf-8
Server: Microsoft-IIS/7.0
jsonerror: true
- WWWAuthenticate: Negotiate
- Authenticate: Negotiate
WhiteSpace:
AuthenticateData: Negotiate
- WWWAuthenticate: NTLM
- Authenticate: NTLM
WhiteSpace:
AuthenticateData: NTLM
XPoweredBy: ASP.NET
Date: Mon, 04 Mar 2013 21:13:39 GMT
ContentLength: 105
HeaderEnd: CRLF
- payload: HttpContentType = application/json; charset=utf-8
HTTPPayloadLine: {"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
ここで本当に際立っているのは
未承認、URL:/webservice/name/service.aspx/function複数の認証方法を使用
これで、許可/認証の問題である場合にのみこれがIE10で発生する理由についてはまだ混乱しています。10に何が追加されましたか、またはこれの根本的な原因をどこで探す必要がありますか?
UPDATE2
fiddlerのクライアントマシンからのヘッダーは次のとおりです(サーバー情報は削除されています):
主要
SESSION STATE: Done.
Request Entity Size: 64 bytes.
Response Entity Size: 9 bytes.
== FLAGS ==================
BitFlags: [ServerPipeReused] 0x10
X-EGRESSPORT: 44537
X-RESPONSEBODYTRANSFERLENGTH: 9
X-CLIENTPORT: 44770
UI-COLOR: Green
X-CLIENTIP: 127.0.0.1
UI-OLDCOLOR: WindowText
UI-BOLD: user-marked
X-SERVERSOCKET: REUSE ServerPipe#46
X-HOSTIP: ***.***.***.***
X-PROCESSINFO: iexplore:2644
== TIMING INFO ============
ClientConnected: 14:43:08.488
ClientBeginRequest: 14:43:08.488
GotRequestHeaders: 14:43:08.488
ClientDoneRequest: 14:43:08.488
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 14:40:28.943
FiddlerBeginRequest: 14:43:08.488
ServerGotRequest: 14:43:08.488
ServerBeginResponse: 14:43:08.592
GotResponseHeaders: 14:43:08.592
ServerDoneResponse: 14:43:08.592
ClientBeginResponse: 14:43:08.592
ClientDoneResponse: 14:43:08.592
Overall Elapsed: 0:00:00.104
The response was buffered before delivery to the client.
== WININET CACHE INFO ============
This URL is not present in the WinINET cache. [Code: 2]
ポータル
SESSION STATE: Done.
Request Entity Size: 64 bytes.
Response Entity Size: 105 bytes.
== FLAGS ==================
BitFlags: [ClientPipeReused, ServerPipeReused] 0x18
X-EGRESSPORT: 44444
X-RESPONSEBODYTRANSFERLENGTH: 105
X-CLIENTPORT: 44439
X-CLIENTIP: 127.0.0.1
X-SERVERSOCKET: REUSE ServerPipe#7
X-HOSTIP: ***.***.***.***
X-PROCESSINFO: iexplore:7132
== TIMING INFO ============
ClientConnected: 14:37:59.651
ClientBeginRequest: 14:38:01.397
GotRequestHeaders: 14:38:01.397
ClientDoneRequest: 14:38:01.397
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 14:37:57.880
FiddlerBeginRequest: 14:38:01.397
ServerGotRequest: 14:38:01.397
ServerBeginResponse: 14:38:01.464
GotResponseHeaders: 14:38:01.464
ServerDoneResponse: 14:38:01.464
ClientBeginResponse: 14:38:01.464
ClientDoneResponse: 14:38:01.464
Overall Elapsed: 0:00:00.067
The response was buffered before delivery to the client.
== WININET CACHE INFO ============
This URL is not present in the WinINET cache. [Code: 2]