最近学习.net core时,搭建的小项目,通过angluar范围webapi时,没有反应,于是在ie上看状态吗为200/ok,但是用谷歌浏览器上发现提示“Provisional headers are shown”,Preview和Response都为空,我也上网百度了.net core跨域访问api,没解决,大佬们还有木有办法。
代码如下;
前端
requestParams.method = "JSONP";
requestParams.url = "http://localhost:30456/api/login?callback=JSON_CALLBACK";
requestParams.xhrFields={
withCredentials: true //配置http跨域请求中携带cookie
};
requestParams.params = data;
后台
//配置跨域处理
services.AddCors(options =>
{
options.AddPolicy("any", builder =>
{
builder.AllowAnyOrigin() //允许任何来源的主机访问
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();//指定处理cookie
});
});
控制器:
[Route("api/[controller]")]
[EnableCors("any")]
public class LoginController : Controller
你用的是jsonp,本来就能跨域,与CORS的配置无关
配置了也不影响吧,难道去掉配置就能访问了?
@灬丶: 建议jsonp改为json,通过cors允许跨域
@dudu: 我去试下
@dudu: url需要改吗
@灬丶: 可以去掉callback=JSON_CALLBACK
,不去也没影响
@dudu: XMLHttpRequest: 网络错误 0x2efd, 由于出现错误 00002efd 而导致此项操作无法完成。又回到以前的问题了,改成jsonp就没有这
@灬丶: ajax请求有没有加contentType: "application/json;charset=utf-8"
?
@dudu: 加了也是一样的
var request = {
login:function (data) {
requestParams.method = "json";
requestParams.url = "http://localhost:30456/api/login";
requestParams.contentType = "application/json;charset=utf-8";
requestParams.params = data;
return RequestService($http, requestParams);
},
@灬丶: requestParams.method = "json";
写错了,应该是get
或post
@dudu: 都试过了,还不行,快疯了
@灬丶: 建议提供一下完整的ajax代码
@dudu: /服务
var loginService = angular.module("loginApp",[]);
//请求服务
loginService.factory("loginRequestService", ["$http",function ($http) {
//请求参数
var requestParams = {
method: "",
url: "",
contentType: "",
params:{}
};
//$http({requst})
var request = {
login:function (data) {
requestParams.method = "GET";
requestParams.url = "http://localhost:30456/api/login";
requestParams.contentType = "application/json;charset=utf-8";
requestParams.params = data;
return RequestService($http, requestParams);
},
};
return request;
}]);
//请求服务
function RequestService($http, request) {
var result = $http(request);
return result;
}就是这样的
@dudu: net::ERR_CONNECTION_REFUSED
@dudu: 主要是我在西安的时候还可以,回到南京后就不行了。在西安用的是别人移动内网的wifi
@灬丶: 建议在浏览器中看一下request headers是否正常
@dudu: 是好的,在西安的时候还可以,回到南京后就不行了
题主解决这个问题了没,我也碰到这个问题了