Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有ASP.NET API凭据的JavaScript XMLHttpRequest_Javascript_.net_Xmlhttprequest_Cors - Fatal编程技术网

具有ASP.NET API凭据的JavaScript XMLHttpRequest

具有ASP.NET API凭据的JavaScript XMLHttpRequest,javascript,.net,xmlhttprequest,cors,Javascript,.net,Xmlhttprequest,Cors,我试图用credentials=true执行post请求,但在发送请求后控制台上出现了一个CORS错误 这是我试图联系的控制器: [RoutePrefix("Account")] public class AccountController : ApiController; [HttpPost] [Route("Login")] public IHttpActionResult Login(LoginDto dto); 这就是我试图达到的目的: [RoutePrefix("Account")

我试图用credentials=true执行post请求,但在发送请求后控制台上出现了一个
CORS
错误

这是我试图联系的控制器:

[RoutePrefix("Account")]
public class AccountController : ApiController;
[HttpPost]
[Route("Login")]
public IHttpActionResult Login(LoginDto dto);
这就是我试图达到的目的:

[RoutePrefix("Account")]
public class AccountController : ApiController;
[HttpPost]
[Route("Login")]
public IHttpActionResult Login(LoginDto dto);
我在
WebApiConfig:

config.EnableCors(new EnableCorsAttribute("http://localhost", "*", "*"));
下面是我使用
Javascript

function createCORSRequest(method, url) {
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;
    if (xhr.withCredentials != undefined) {
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined") {
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}

function post(url, data) {
    return new Promise(
        function httpPromise (resolve, reject) {
            var request = createCORSRequest("post", url);
            if (request) {
                request.setRequestHeader('Accept', 'application/json');
                request.setRequestHeader('Content-Type', 'application/json');
                request.onloadend = function (progress) {
                    var status = request.status;
                    var result = JSON.parse(request.response || "null");
                    if (status >= 200 && status < 300) resolve(result);
                    else reject(result ? result.Message || result : result);
                };
                request.send(data);
            }
        });
}
函数createCORSRequest(方法,url){
var xhr=new XMLHttpRequest();
xhr.withCredentials=true;
if(xhr.withCredentials!=未定义){
open(方法、url、true);
}else if(XDomainRequest的类型!=“未定义”){
xhr=新的XDomainRequest();
open(方法,url);
}否则{
xhr=null;
}
返回xhr;
}
函数post(url、数据){
回报新的承诺(
功能httpPromise(解决、拒绝){
var请求=createCORSRequest(“post”,url);
如果(请求){
setRequestHeader('Accept','application/json');
setRequestHeader('Content-Type','application/json');
request.onloadend=函数(进度){
var status=request.status;
var result=JSON.parse(request.response | | |“null”);
如果(状态>=200&&status<300)解决(结果);
else拒绝(结果?结果。消息| |结果:结果);
};
请求发送(数据);
}
});
}
下面是控制台中出现的错误消息

无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。因此,不允许访问源“”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制


您需要在
config.EnableCors(…)
调用中指定
SupportsCredentials=true

config.EnableCors(new EnableCorsAttribute("http://localhost", "*", "*")
{ SupportsCredentials = true }); 

您能否共享您正在发送的构造头以及开发人员工具的响应?可能会有很大帮助。错误消息已经非常明确地告诉您缺少什么。。。所以,去添加那个响应头。@CBroe我确实添加了
request.setRequestHeader(“Access-Control-Allow-Credentials”,“true”)当我第一次看到问题时,结果没有任何变化。@Bottonbertalan我该怎么检查?(使用chrome)开发者控制台->网络选项卡->点击你的请求->标题