到目前为止,我们在IIS上有两个针对angular_client和web_api的网站,已安装了托管捆绑包,并且已经授予IUSR,Network,Network Service和Everyone等用户许可。
对每个站点的导航分别起作用,即在API中,调用http://localhost:51975/api/user会产生所有用户的列表。
问题在于Angular登录页面无法与API通信以验证用户身份
OPTIONS http://localhost:51975/api/user/authenticate net :: ERR_CONNECTION_REFUSED
我试图将与API关联的IP修改为静态IP,即10.1.x.y,然后告诉angular调用http://10.1.x.y:51975/api/user/authenticate。
在API中,我启用了将日志发送到浏览器以及日志文件夹的功能,它显示的唯一日志是:
托管环境:生产 内容根路径:C:\ inetpub \ wwwroot \ api 现在收听:http://127.0.0.1:39834 应用程序已启动。按Ctrl + C关闭。 应用程序正在关闭...
为什么它在其他端口而不是相关的51975上进行监听?
为什么从Angular到API的连接被拒绝?
为什么应用程序正在关闭?
这是正确的方法吗?
更新
仅在服务器 上,应用程序可以正常运行,并具有以下配置:
角度位于10.x.y.z:4200,
API 10.x.y.z:51975,
CORS已正确修复。
问题是,当我尝试使用公共ip或主机名时,我仍然只能访问angular而不是Web API,我尝试为api分配主机名,但仍无法正常工作!
谢谢
答案 0 :(得分:3)
CORS错误说明了您需要了解的所有内容。如果还使用DNS名称访问,则还需要为公用IP和DNS配置CORS。必须将其配置为与访问Angular应用程序使用的网址完全相同。
app.UseCors(options =>
options.WithOrigins(
"http://localhost:4200/",
"http://{public IP}:{public port}/",
"http://{public DNS name}:{public port}/"
).AllowAnyMethod().AllowAnyHeader());
您仅需要Angular客户端地址的CORS设置,因为Angular应用程序需要获得许可才能向您的Web API发出CORS请求。它从公用地址进行调用,因此localhost
配置无济于事,仅当您使用本地主机在本地访问它时,此功能才有用。
这里是指向Angular documentation about CORS和Microsoft documentation how to enable CORS的链接,在此进行了详细说明。
答案 1 :(得分:1)
确保在Angular项目的api请求中创建了正确的标头。
喜欢:
kubectl --context=newemployee-context get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx nginx-ingress-controller-797b884cbc-pckj6 1/1 Running 0 85d
ingress-nginx prometheus-server-8658d8cdbb-92629 1/1 Running 0 36d
kube-system coredns-86c58d9df4-gwk28 1/1 Running 0 92d
kube-system coredns-86c58d9df4-jxl84 1/1 Running 0 92d
kube-system etcd-kube-master-1 1/1 Running 0 92d
kube-system kube-apiserver-kube-master-1 1/1 Running 0 92d
kube-system kube-controller-manager-kube-master-1 1/1 Running 4 92d
kube-system kube-flannel-ds-amd64-k6sgd 1/1 Running 0 92d
kube-system kube-flannel-ds-amd64-mtrnc 1/1 Running 0 92d
kube-system kube-flannel-ds-amd64-zdzjl 1/1 Running 1 92d
kube-system kube-proxy-4pm27 1/1 Running 1 92d
kube-system kube-proxy-ghc7w 1/1 Running 0 92d
kube-system kube-proxy-wsq4h 1/1 Running 0 92d
kube-system kube-scheduler-kube-master-1 1/1 Running 4 92d
kube-system tiller-deploy-5b7c66d59c-6wx89 1/1 Running 0 36d
.net核心方面:
createHeader() {
let reqheaders = new HttpHeaders();
reqheaders.append('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT');
reqheaders.append('Access-Control-Allow-Origin', '*');
let reqHeader = { headers: reqheaders };
return reqHeader;
}
答案 2 :(得分:0)
k-grid-edit-row