Я новичок ie в ASP. NET со второй попыткой кодирования. NET, поэтому, пожалуйста, будьте терпеливы со мной и благодарим вас за помощь в первом проекте. Следующий проект представляет собой попытку создать. NET API, который будет только GET JSON для приложения React для отображения данных и разбитых на страницы данных.
Как гласит заголовок, я не вижу Access- Control-Allow-Origin в разделе заголовка инструментов разработчика - см. Прикрепленный снимок экрана.
Как видно из предыдущего снимка экрана, он работает, как и ожидалось, за исключением того, что заголовки ничего не показывают относительно Access-Control-Allow-Origin, что заставляет мое приложение реакции выдавать ошибку «SyntaxError: Неожиданный конец ввода» - когда я помещаю JSON внутри файла и заставьте приложение реагировать получить локальный файл. json, все работает как положено, что подтверждает, что проблема не связана с получением «Access-Control-Allow-Origin» в заголовках. Следующий код - мой файл Startup.cs, который использует MySql для извлечения данных.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace v2
{
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.AddCors(options =>
options.AddPolicy("AllowSpecific", p => p.WithOrigins("http://localhost:3006")
.WithMethods("GET")
.WithHeaders("name")));
services.AddMvc(option => option.EnableEndpointRouting = false);
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
//MySql
services.AddTransient<MySqlDatabase>(_ => new MySqlDatabase("server=xyz.com; database=someDB; uid=someUser; pwd=somePwd; port=somePort;"));
}
// 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.EnvironmentName == "dev")
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseCors(builder =>
builder.WithOrigins("http://localhost:3006")
.AllowAnyHeader()
);
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "OrderItem",
template: "OrderItem/{div?}/{yr?}",
defaults: new { controller = "OrderItem", action = "Index" });
});
}
}
}
Чтобы JSON отображался без каких-либо тегов html, это было достигнуто благодаря наличию только @ResponseBody в _Layout и @ HTML .raw (JSON .parse (Model). )) на странице OrderItem / Index.cs html.
В PHP я бы использовал что-то вроде следующего для отображения Access-Control-Allow-Origin в заголовках:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Content-Type: application/json; charset=UTF-8");
Должен ли я сделать нечто подобное на страницах _Layout и cs html?
Еще один момент, я не смогу опробовать ваши предложения, пока не вернусь к работе в понедельник, но как обычно, заранее спасибо, и я ценю вашу помощь