在使用服务堆栈进行跨域调用的服务器之前,我已成功通过身份验证并获取我的令牌.
现在我想做另外一个调用来检索数据:
$.ajax({ beforeSend: function(xhr) { xhr.setRequestHeader('Authorization','Basic ' + getToken()); },type: "GET",url: requestUrl,xhrFields: { withCredentials: true },async: true,dataType: 'json',crossDomain: true })
当我看到我的谷歌chrome开发工具控制台我看到这样:
OPTIONS http://MyPc.company:82//customers 404 (Not Found) OPTIONS http://MyPc.company:82//customers Invalid HTTP status code 404 XMLHttpRequest cannot load http://MyPc.company:82//customers. Invalid HTTP status code 404 (index):1
当我看着提琴手,我看到这个要求:
检查员=>认证:没有授权标题.
检查员=>生的:
OPTIONS http://MyPc.company:82//customers HTTP/1.1 Host: MyPc.company:82 Connection: keep-alive Cache-Control: no-cache Pragma: no-cache Access-Control-Request-Method: GET Origin: http://MyPc.company User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/30.0.1599.101 Safari/537.36 Access-Control-Request-Headers: access-control-allow-origin,accept,access-control-allow-headers,authorization,access-control-allow-methods,content-type Accept: */* Referer: http://MyPc.company/ Accept-Encoding: gzip,deflate,sdch Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
为什么不发送授权头?这似乎首先看到我的起因问题.
在JavaScript中
原文链接:https://www.f2er.com/ajax/160078.htmljQuery.support.cors = true; function make_base_auth(user,password) { var tok = user + ':' + password; var hash = btoa(tok); return "Basic " + hash; } function DoTest() { var TestRequest = new Object(); TestRequest.name = "Harry Potter"; TestRequest.Id = 33; var username = "admin"; var password = "test"; $.ajax({ type: 'Post',contentType: 'application/json',cache: false,async: false,url: serverIP + '/TestAPI/'+ TestRequest.Id,data: JSON.stringify(TestRequest),dataType: "json",beforeSend: function (xhr) { xhr.setRequestHeader("Authorization",make_base_auth(username,password)); },success: function (response,status,xhr) { var s= response.message; },error: function (xhr,err) { alert(xhr.statusText); } }); }
应该为CORS启用服务配置
Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type,Authorization"));
也许我以前的answer可以帮你.
或者更好的以下博客文章从Community Resources