《Asp.Net Core3 + Vue3入坑教程》 此教程適合新手入門或者先後端分離嘗試者。能夠根據圖文一步一步進操做編碼也能夠選擇直接查看源碼。每一篇文章都有對應的源碼javascript
教程後期會將 .Net Core 3升級成 .Net Core 5html
Asp.Net Core後端項目前端
Vue3 前端項目vue
暫未發表敬請期待...java
本文爲《Asp.Net Core3 + Vue3入坑教程》系列教程的第二篇 - 跨域問題處理。先後端分離遇到的最多見問題之一就是跨域問題。本文接着上文(後端項目搭建與Swagger配置步驟)繼續爲Asp .Net Core項目解決跨越問題jquery
代碼以下:nginx
注意: url: "https://localhost:44372/api/Values", 端口號要與Simple項目的一致git
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title> CRONTest </title> <script type="text/javascript" src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" > $.ajax({ type: "GET", url: "https://localhost:44372/api/Values", // 須要保證端口號與Simple項目的一致 success: function(msg){ alert( "CRONTest Success: " + msg ); } }); </script> </head> <body> <p>CRONTest</p> </body> </html>
代碼以下:github
注意:目前先容許全部請求,當可以明確前端域名的時候,再改掉WithOrigins方式!!!ajax
using Microsoft.Extensions.DependencyInjection; namespace Simple_Asp.Net_Core.ServiceProvider { public static class CORS { public static void AddCORS(this IServiceCollection services) { services.AddCors( options => options.AddPolicy( "CorsTest", // 目前先容許全部請求,當可以明確前端域名的時候,再改爲WithOrigins方式 p => p.AllowAnyOrigin() // 配置前端域名,注意端口號後不要帶/斜杆 //p => p.WithOrigins("https://localhost:44372", "https://localhost:44372") .AllowAnyHeader() .AllowAnyMethod() .WithExposedHeaders("Content-Disposition"))); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Simple_Asp.Net_Core.ServiceProvider; namespace Simple_Asp.Net_Core { public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddCORS(); services.AddMvc(); services.AddSwagger(); } // 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", "ApiHelp V1"); }); } app.UseCors("CorsTest"); app.UseRouting(); app.UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute()); } } }
此次能成功調用後端接口,解決了跨域問題
本文爲Simple項目配置CORS策略來解決跨域問題,這時候前端項目能夠正常請求後端服務。
須要注意目前源碼是容許全部請求,當可以明確前端域名的時候,要改掉WithOrigins方式!保證後端服務的安全!
解決跨域問題有不少種,可使用經過jsonp或者nginx代理等等
注意:源碼調試過程當中若是出現xml文件路徑錯誤,須要參照上文(後端項目搭建與Swagger配置步驟)Swagger配置「配置XML 文檔文件」步驟,取消勾選而後再選中 ,將XML路徑設置成與你的電腦路徑匹配!
https://github.com/Impartsoft/Simple_Asp.Net_Core/tree/master/Simple_Asp.Net_Core 2.CORS
微軟官方文檔 https://docs.microsoft.com/zh-cn/aspnet/core/?view=aspnetcore-5.0
CORS詳解 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS