2 Câu hỏi: Chặn bởi CORS Chính sách althouht được thiết lập trong API Web [trùng lặp]

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM
    

Câu hỏi này đã có câu trả lời tại đây:

    

Tôi đang chạy ứng dụng ASP.NET Core Angular, tôi đã thêm Trình điều khiển Api trong ứng dụng Core và tôi đang cố gắng thực hiện cuộc gọi api từ ứng dụng Angular, ứng dụng Core được lưu trữ trên 58181 và ứng dụng Angular trên 44337, khi tôi hãy thử gọi Api từ Angular a get

Access to XMLHttpRequest at 'http://localhost:58181/api/authenticate/login' from origin 'https://localhost:44337' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

Tôi định cấu hình Cors trong API

   services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy", policy =>
                {
                    policy.AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod();
                });
            });
  app.UseCors("CorsPolicy");

Tôi đang cố gắng gọi API như thế này

 register() {
    var body = {
      UserName: this.formModel.value.UserName,
      Email: this.formModel.value.Email,
      FullName: this.formModel.value.FullName,
      Password: this.formModel.value.Passwords.Password
    };
    return this.http.post(this.BaseURI + '/authenticate/register', body, {
      headers: new HttpHeaders({ 
      'Access-Control-Allow-Origin':'*',
      'Content-Type': 'application/json',
      'Authorization':'authkey',
      'userid':'1'
    })});
  }

Điều tôi mong đợi là gọi trình điều khiển xác thực của mình và đăng nhập /đăng ký người dùng của tôi, cả ứng dụng Angular và Apis sẽ nằm trên cùng một localhost, trên các cổng khác nhau.

    
0
  1. Bạn không thực sự cần phải đặt tiêu đề Content-Type là bạn đang sử dụng HttpClient. yêu cầu. Vì vậy, bạn cũng không cần phải đặt nó trong tiêu đề yêu cầu của mình.
    2019-05-08 16: 45: 43Z
  2. 2019-05-08 18: 14: 08Z
  3. Các ứng dụng góc cạnh chạy trong trình duyệt, chúng không có cổng. Tôi hơi bối rối làm thế nào bạn có hai cổng khác nhau. Bạn đang sử dụng Access-Control-Allow-Origin và ủy quyền các yêu cầu của bạn với angular-cling-serve? Bạn có hai ứng dụng cốt lõi không?
    2019-05-08 21: 27: 47Z
2 Câu trả lời                              2                         

Mã của bạn phải như thế này. Đảm bảo phần mềm trung gian theo đúng thứ tự

proxy-conf     
0
2019-05-09 04: 23: 40Z

Để bật CORS, bên dưới là mã:

  1. Trong dự án web, tôi đã thêm một tệp crossdomain.xml tại vị trí gốc chứa nội dung
 services.AddCors();
 services.AddMvc();

 app.UseCors(builder => builder
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
 app.UseMvc();
  1. Trong tệp cấu hình dự án web web.config, thêm thẻ:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->

    <!-- Most restrictive policy: -->
    <site-control permitted-cross-domain-policies="none"/>
</cross-domain-policy>
  1. Một thay đổi khác nằm ở phía WEB API trong tệp cấu hình: AngularJS Cho phép xuất xứ với WebApi2

Cảm ơn

    
0
2019-05-09 04: 34: 03Z
<location path="crossdomain.xml">
    <system.webServer>
      <staticContent>
        <clear />
        <mimeMap fileExtension=".xml" mimeType="text/x-cross-domain-policy" />
      </staticContent>
    </system.webServer>
  </location>
nguồn đặt đây