【问题标题】:Angular 5:Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header presentAngular 5:对预检请求的响应未通过访问控制检查:不存在“Access-Control-Allow-Origin”标头
【发布时间】:2018-08-04 03:47:26
【问题描述】:

我使用 Dotnet Core 2.0 创建了启用 CORS 的 Web API。在 startup.cs 中,我启用了如下所示的 CORS

    // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddMvc();

        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors(
                        options => options.WithOrigins("http://localhost/orca").AllowAnyHeader()
            );
            app.UseMvc();
        }
    }
}

我在 Angularjs 5 中调用这个 web api,如下所示 _服务

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';

@Injectable()
export class SdrDataService {
    Url: string = 'http://localhost/ORCA/api/ORCA/asset'

    constructor(private _http: Http) { }

    getdata() {
        let myHeaders = new Headers();
        myHeaders.append('Content-Type', 'application/json');
        let options = new RequestOptions({ headers: myHeaders });
        return this._http.get(this.Url, options)
            .map((response: Response) => response.json())
            .catch(this._errorHandler)
     }

    _errorHandler(error: Response) {
        console.log(error);
        return Observable.throw(error || "Internal server error");
    }
}

我在控制台中收到一条错误消息: ** 无法加载 http://localhost/ORCA/api/ORCA/asset/8Z5324J:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:62001' 不允许访问。响应具有 HTTP 状态代码 401。 **

我不确定是否缺少启用 CORS 以检索数据的内容。 请问有什么建议吗?

【问题讨论】:

    标签: angular asp.net-core


    【解决方案1】:

    对于 CORS,来源不包括路径。删除那个路径片段:

     options.WithOrigins("http://localhost:62001")
    

    【讨论】:

    • 我尝试删除路径片段。但仍然不成功。下面给出的是修改后的代码: app.UseCors("AllowFromAll"); app.UseMvc();
    • 啊,问题已编辑。端口必须包含在来源中。
    猜你喜欢
    • 2019-09-07
    • 2019-02-02
    • 1970-01-01
    • 2018-10-12
    • 2021-05-28
    • 2016-02-23
    • 2020-12-07
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多