我試圖讓使用Ajax WCF函數的調用如下:setRequestHeader不添加請求頭WCF調用
$.ajax({
url:http://localhost:64121/Test.svc/json/GetNumber?X='+ var1 + '&callback=?',
dataType: 'json',
beforeSend : function(xhr) {
xhr.setRequestHeader("Authorization", "BasicAuthTest");
},
success: function(trackingData) {
alert("success");
}
});
WCF代碼beaking並receving請求
public class CustomUserNameValidatorBasic : ServiceAuthorizationManager
{
protected override bool CheckAccessCore(OperationContext operationContext)
{
try
{
var msg = operationContext.RequestContext.RequestMessage;
// If user requests standart help-page then ignore authentication check.
if (msg.Properties.ContainsKey("HttpOperationName") && msg.Properties["HttpOperationName"].ToString() == "HelpPageInvoke")
{
return base.CheckAccessCore(operationContext);
}
var httpRequestHeaders = ((HttpRequestMessageProperty) msg.Properties[HttpRequestMessageProperty.Name]).Headers;
// Is Authorization-header contained in http-headers?
if (!httpRequestHeaders.AllKeys.Contains(HttpRequestHeader.Authorization.ToString()))
{
//code returns here
return false;
}
return false;
}
catch (Exception e)
{
return false;
}
}
}
由於顯示「授權」標頭不包含在req標頭陣列中
在螢火蟲在請求報頭爲Ajax reqeuest:
請求Headersview源 接受/接受編碼的gzip,放氣
接受語言的en-US,連接; Q = 0.5緩存控制最大年齡= 0
連接保持活動主機test.proxyU.com If-Modified-Since Wed,21 Mar 2012 19:46:56 GMT If-None-Match「e0818-17278-4bbc60dc86c00」
User-Agent Mozilla/5.0(Windows NT 6.1; WOW64; RV:16.0)
的Gecko/20100101火狐/ 16.0
更新:考慮回答以下我已經試過3種方法如下他們沒有添加標題。所有調用wcf正確,但`授權'標題只是沒有在請求。如果我看的HTTP請求頭看起來非常像屏幕截圖我張貼以上
方法1
$.ajax({
url: "http://localhost:64121/Test.svc/json/GetNumber?X='+ var1 + '&callback=?'",
beforeSend: function(xhr){xhr.setRequestHeader("Authorization", "BasicAuthTest");},
success: function(trackingData) {
alert("success");
}
});
方法2
$.ajax({
url: "http://localhost:64121/Test.svc/json/GetNumber?X='+ var1 + '&callback=?'",
headers: {"Authorization": "BasicAuthTest"},
success: function(trackingData) {
alert("success");
}
});
方法3
$.ajax({
url: "http://localhost:64121/Test.svc/json/GetNumber?X='+ var1 + '&callback=?'",
beforeSend : function(xhr, settings) {
$.extend(settings, { headers : { "Authorization" : "BasicAuthTest" } });
},
success: function(trackingData) {
alert("success");
}
});
在瀏覽器中使用開發人員工具(通常爲F12)並檢查是否添加了頭部請求。 – STO
我更新了標題 – PUG
@jaminator jquery的版本是什麼? – drch