我已经启用了cors的原点,但仍未获得访问权限控制。
我用角度作为前端。正在要求Web API核心项目中的API响应。由于两者都在不同的来源上运行,因此我已经设置了交叉来源资源共享,但仍会出现错误,没有“访问控制 - 允许 - 孔” ............................................................................................................................................................................................................................................................................................................................................................. ................................................................................. .....
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using pizzaria.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace pizzaria
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<databaseContext>(db => db.UseSqlServer(Configuration.GetConnectionString("Connection")));
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "pizzaria", Version = "v1" });
});
services.AddCors(cors => cors.AddPolicy("MyPolicy", builder => {
builder.WithOrigins("http://localhost:4200").AllowAnyMethod().AllowAnyHeader();
}));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "pizzaria v1"));
}
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("MyPolicy");
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using pizzaria.Model;
namespace pizzaria.Controllers
{
[EnableCors("http://localhost:4200,*,*")]
[Route("api/[controller]")]
[ApiController]
public class UserAccountsController : ControllerBase
{
private readonly databaseContext _context;
public UserAccountsController(databaseContext context)
{
_context = context;
}
// GET: api/UserAccounts
[HttpGet]
public async Task<ActionResult<IEnumerable<UserAccount>>> GetuserAccounts()
{
return await _context.userAccounts.ToListAsync();
}
// GET: api/UserAccounts/5
[HttpGet("{id}")]
public async Task<ActionResult<UserAccount>> GetUserAccount(string id)
{
var userAccount = await _context.userAccounts.FindAsync(id);
if (userAccount == null)
{
return NotFound();
}
return userAccount;
}
// PUT: api/UserAccounts/5
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPut("{id}")]
public async Task<IActionResult> PutUserAccount(string id, UserAccount userAccount)
{
if (id != userAccount.userId)
{
return BadRequest();
}
_context.Entry(userAccount).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!UserAccountExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/UserAccounts
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPost]
public async Task<ActionResult<UserAccount>> PostUserAccount(UserAccount userAccount)
{
_context.userAccounts.Add(userAccount);
await _context.SaveChangesAsync();
return CreatedAtAction("GetUserAccount", new { id = userAccount.userId }, userAccount);
}
// DELETE: api/UserAccounts/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteUserAccount(string id)
{
var userAccount = await _context.userAccounts.FindAsync(id);
if (userAccount == null)
{
return NotFound();
}
_context.userAccounts.Remove(userAccount);
await _context.SaveChangesAsync();
return NoContent();
}
private bool UserAccountExists(string id)
{
return _context.userAccounts.Any(e => e.userId == id);
}
}
}
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-signin',
templateUrl: './signin.component.html',
styleUrls: ['./signin.component.css']
})
export class SigninComponent implements OnInit {
li: any;
lis = [];
constructor(private http: HttpClient) { }
ngOnInit(): void {
console.log("started");
this.http.get("https://localhost:44302/api/userAccounts").subscribe(Response => {
// If response comes hideloader() function is called
// to hide that loader
console.log("working");
if (Response) {
console.log("working");
}
console.warn("not working")
this.li = Response;
this.lis = this.li.list;
});
console.warn("function exit");
}
}
```[enter image description here][1]
[1]: https://i.sstatic.net/TcUFw.jpg
I am using angular as my front end. There am requesting for api response from web api core project. Since both are running on a different origin, I have setup cross origin resourse sharing but still am getting error No 'Access-Control-Allow-Origin'.........................................................................................
startup.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using pizzaria.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace pizzaria
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<databaseContext>(db => db.UseSqlServer(Configuration.GetConnectionString("Connection")));
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "pizzaria", Version = "v1" });
});
services.AddCors(cors => cors.AddPolicy("MyPolicy", builder => {
builder.WithOrigins("http://localhost:4200").AllowAnyMethod().AllowAnyHeader();
}));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "pizzaria v1"));
}
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("MyPolicy");
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
Apicontroller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using pizzaria.Model;
namespace pizzaria.Controllers
{
[EnableCors("http://localhost:4200,*,*")]
[Route("api/[controller]")]
[ApiController]
public class UserAccountsController : ControllerBase
{
private readonly databaseContext _context;
public UserAccountsController(databaseContext context)
{
_context = context;
}
// GET: api/UserAccounts
[HttpGet]
public async Task<ActionResult<IEnumerable<UserAccount>>> GetuserAccounts()
{
return await _context.userAccounts.ToListAsync();
}
// GET: api/UserAccounts/5
[HttpGet("{id}")]
public async Task<ActionResult<UserAccount>> GetUserAccount(string id)
{
var userAccount = await _context.userAccounts.FindAsync(id);
if (userAccount == null)
{
return NotFound();
}
return userAccount;
}
// PUT: api/UserAccounts/5
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPut("{id}")]
public async Task<IActionResult> PutUserAccount(string id, UserAccount userAccount)
{
if (id != userAccount.userId)
{
return BadRequest();
}
_context.Entry(userAccount).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!UserAccountExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/UserAccounts
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPost]
public async Task<ActionResult<UserAccount>> PostUserAccount(UserAccount userAccount)
{
_context.userAccounts.Add(userAccount);
await _context.SaveChangesAsync();
return CreatedAtAction("GetUserAccount", new { id = userAccount.userId }, userAccount);
}
// DELETE: api/UserAccounts/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteUserAccount(string id)
{
var userAccount = await _context.userAccounts.FindAsync(id);
if (userAccount == null)
{
return NotFound();
}
_context.userAccounts.Remove(userAccount);
await _context.SaveChangesAsync();
return NoContent();
}
private bool UserAccountExists(string id)
{
return _context.userAccounts.Any(e => e.userId == id);
}
}
}
Angular component.ts
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-signin',
templateUrl: './signin.component.html',
styleUrls: ['./signin.component.css']
})
export class SigninComponent implements OnInit {
li: any;
lis = [];
constructor(private http: HttpClient) { }
ngOnInit(): void {
console.log("started");
this.http.get("https://localhost:44302/api/userAccounts").subscribe(Response => {
// If response comes hideloader() function is called
// to hide that loader
console.log("working");
if (Response) {
console.log("working");
}
console.warn("not working")
this.li = Response;
this.lis = this.li.list;
});
console.warn("function exit");
}
}
```[enter image description here][1]
[1]: https://i.sstatic.net/TcUFw.jpg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试将其更改为
我认为您不应该使用双引号标记
Try Changing it to
I think you should not use double quotation marks