定西网站建设公司,wordpress 文章不同背景,一个公司的网站怎么做的,免费企业建站系统源码如果咱们有处理过MV5 跨域问题这个问题也不大。#xff08;1#xff09;为什么会出现跨域问题#xff1a;浏览器安全限制了前端脚本跨站点的访问资源#xff0c;所以在调用WebApi 接口时不能成功访问资源#xff0c;原因“同源策略”的存在#xff1a;同源指以下几点相同… 如果咱们有处理过MV5 跨域问题这个问题也不大。1为什么会出现跨域问题 浏览器安全限制了前端脚本跨站点的访问资源所以在调用WebApi 接口时不能成功访问资源原因“同源策略”的存在 同源指以下几点相同 (1) IP地址/域名 (2) 端口号 (3) 网络协议 以上三点相同即为同源浏览器将不做限制。 同源 WebFrom 前台Ajax调用后台PageLoad页时 因为是在同一站点以上三点均满足也就不会出现跨域的问题。 不同源 比如用微服务开发时前台和微服务没有在同一台服务器上虽然端口相同IP不同协议也相同这时就会出现了跨域的问题了。 引用脚本时会有例外2文章以AspNetCore Api 为例 2.1首先创建一个CoreAPI的项目这个就不多说了 2.2确保项目NuGet中引用 AspNetCore.ALL 里面包含 AspNetCore.Cors 如果没有右击项目依赖项代开NuGet管理工具 如图所示查找 2.3在Startup.cs 文件的ConfigureServices方法中注入如下代码 1第一种services.AddCors(options options.AddPolicy(Domain,builder builder.WithOrigins(http://a.example.com, http://c.example.com).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials())); http://a.example.com, http://c.example.com 代表着允许访问的域就好像给这个域开放了一个权限允许访问的权限可以写多个逗号分隔 2第二种 services.AddCors(options options.AddPolicy(Domain,builder builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials())); //AllowAnyMethod允许跨域策略允许所有的方法GET/POST/PUT/DELETE 等方法 如果进行限制需要 AllowAnyMethod(GET,POST) 这样来进行访问方法的限制 //AllowAnyHeader允许任何的Header头部标题 有关头部标题如果不设置就不会进行限制 //AllowAnyOrigin 允许任何来源 //AllowCredentials 设置凭据来源 这里是重点不多说了F12 查看源 阅读注释就明白了。 在项目中可以写 多个services.AddCors() 需要注意的是 Domain1 的区别 咱们可以针对不同的限制些不同的 限制规则services.AddCors(options options.AddPolicy(Domain1, builder builder.WithOrigins(http://a.example.com, http://c.example.com).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));services.AddCors(options options.AddPolicy(Domain2, builder builder.WithOrigins(http://a.example.com, http://c.example.com).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));services.AddCors(options options.AddPolicy(Domain3, builder builder.WithOrigins(http://a.example.com, http://c.example.com).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));services.AddCors(options options.AddPolicy(Domain4, builder builder.WithOrigins(http://a.example.com, http://c.example.com).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));为什么做这么多限制呢其实大家每个请求都包含了很多内容 比如通过 抓包工具看到的每条请求所包含的请求信息 再比如我们通过HTTP发送请求时进行的设置下图举例还可以设置更多的设置这些设置都可以通过 services.AddCors()来进行设置 2.4在Startup.cs 文件中的Configure()方法中注册我们的 Domain public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseCors(Domain1); app.UseCors(Domain2); app.UseCors(Domain3); app.UseCors(Domain4); }上面操作完之后我们就结束了准备任务现在可以进行使用了使用方法如下 2.5使用如下 1第一种 action[HttpGet({OrderNO}/{BranchID})] //启用跨域 [EnableCors(Domain)] public Object getMultipleOrderDetail(string OrderNO, int OrderNoType, string BranchID) { return vM.getMultipleOrderDetail(OrderNO, OrderNoType, BranchID); }2第二种 控制器 //启用跨域[EnableCors(Domain)][Produces(application/json)][Route(api/BorrowOrder/[action])] public class SP_PartsBorrowOrderController : Controller{ 2.6 :前台调用代码如下 重点是这个节点 xhrFields: { withCredentials:true //跨域请求中带cookie },//必须有这项的配置不然cookie无法发送至服务端div input idlogin value跨域请求 typebutton / /div script $(#login).click(function () { debugger $.ajax({ type: POST, url: http://localhost:54606/api/BorrowSignDetail/BorrowSignOperate, data: JSON.stringify([ { InputItemID: 111, PartBarCode: 11, PartNO: 11, Counts: 11 } ]) , contentType: application/json, dataType: json, xhrFields: { withCredentials: true }, success: function (result) { alert(result) } }); }) /script本文是以 CORS 进行实现 原文地址 https://www.cnblogs.com/szlblog/p/8921629.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com