我已经在这个论坛上搜索了几天,但无法解决此问题。
为了描述环境,我有一个运行IIS 10的Windows 10盒子,
客户端应用程序在端口80上运行,WebService(.NET Core 2.0)在端口123上运行。
客户端应用程序始终出现错误0:未知错误,据我所知是CORS问题。
我使用以下配置了Web服务(服务器端):
services.AddCors(options => options.AddPolicy("CorsPolicy",
builder => {
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
然后再用
app.UseCors("CorsPolicy");
我的angular 6应用程序定义了如下服务:
export class SearchService {
const baseUrl = 'http://drague.karaoke:123/api';
const searchUrl = this.baseUrl + '/KaraokeSongs/search';
constructor(private http: HttpClient) { }
search(term) {
if (!term) {
term = ""
}
var restResponse:SearchSong[];
const parameters = new HttpParams().set('filter', term);
const headerDict = new HttpHeaders({
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Methods': 'GET,PUT,OPTIONS',
'Access-Control-Allow-Headers': 'Access-Control-Allow-Origin, Content-Type, Accept, Accept-Language, Origin, User-Agent',
'Access-Control-Allow-Origin': '*',
});
console.log(headerDict);
return this.http.get<SearchSong[]>(this.searchUrl, { headers: headerDict, params: parameters });
}
当我尝试使用Postman时,一切都很好,服务将按预期进行响应。使用以下配置运行ng-serve --proxy-config时也是如此:
{
"/api" : {
"target": "http://drague.karaoke:123",
"secure": false,
"changeOrigin": true,
"logLevel": "debug"
}
}
当我在IIS上部署客户端时,无法使其正常工作。任何想法都欢迎,我真的很拼命...
有关环境的有用信息:
严格来说是http调用(没有Https)
这是一个Intranet。路由到服务器是由WIFI路由器完成的,该路由器公开了域“ drague.karaoke”。
客户端部署在http://drague.karaoke:80
感谢您的帮助...
Rejean
答案 0 :(得分:0)
我做了很多测试和试验。最后,看来端口123是保留端口(用于NTP)。我将端口更改为81,一切正常...
奇怪的是,Firefox没有给出任何提示,Fiddler和Charles都没有...
感谢Chrome(和Stack Overflow)帮助我弄清楚了......