asp.net Core API接口 POST, 在swagger中测试访问正常并提交数据正常么有问题,单独访问这个接口则返回404。
/// <summary>
/// 新增历史记录并返回主键ID
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
[Route("AddOrderIdentity")]
[EnableCors("any")]//添加cors 服务
public JsonResult AddOrderIdentity(OrderHistory entity = null)
{
if (entity == null)
return Json("参数为空");
return Json(bll.InsertReturnIdentity(entity));
}
404一般都是地址没写对,你检查下。或者贴下代码,看下你代码有没有什么问题
谢谢,谢谢。
@PEPE YU: Post请求不能通过地址栏直接访问的,通过后端代码模拟请求试试
@Heart丶: 那前端调用返回404,前端如何可以成功调用呢
怎么访问的,贴代码
谢谢,在Swagger中访问正常,提交数据信息也正常,单独访问这个Post接口返回404,图片贴出来了,麻烦有空帮忙看看,谢谢。
你这个是个post接口,不支持get,所以你浏览器里直接访问是找不到的,浏览器地址栏访问都是Get方式。
谢谢, 对接获取到返回404,有什么方法吗?谢谢
@PEPE YU: 模拟提交,如果程序访问,考虑跨域问题,netcore跨域百度下就可以解决
@PEPE YU: 用postman模拟提交,我一直用postman做代码测试。
@PEPE YU: 你在特性上在加一个[HttpGet]
刚过这个坑 应该是跨域的问题 来个中间件
HttpRequestHeaders Headers = context.Request.Headers as HttpRequestHeaders; context.Response.Headers.Add("Access-Control-Allow-Origin", Headers.HeaderOrigin); StringValues HeaderAccessControlRequestHeaders = Headers.HeaderAccessControlRequestHeaders; context.Response.Headers.Add("Access-Control-Allow-Headers", HeaderAccessControlRequestHeaders); context.Response.Headers.Add("Access-Control-Allow-Credentials", "true"); context.Response.Headers.Add("Access-Control-Allow-Methods", context.Request.Method)
感谢提醒,这个写在Startup中?
@PEPE YU: 肯定啊 也可以 实现IStartupFilter
@PEPE YU: 最重点是开启日志 这个才是检查问题的所在
不用你写的这么复杂,请求头设置现在都有对应枚举了,你可以再简化的呢。
app.UseCors(options =>
{
options.AllowAnyOrigin()
.WithMethods(new string[] { HttpMethods.Get, HttpMethods.Post });
});
这样设置就可以了。很简洁的方式。。。
@Jeffcky: 这个我看微软文档知道 但是尝试过 不行 通过不了 不知道为什么
@SpeakHero:还有一步,还要添加services.AddCors(),好像是这样,你添加了吗??
@Jeffcky: 跟着微软文档一步一步 都不行
services.AddCors(options => { //xhrFields: { // withCredentials: true options.AddPolicy("AllowSpecificOrigins", builder => { builder.WithOrigins(withOrigins.ToArray()) .AllowAnyMethod().AllowCredentials().AllowAnyHeader(); }); });
这样通过不了的 尝试很多次了 chrome 不认
@SpeakHero: WithOrigins(withOrigins.ToArray()),你设置了跨域的域名了?我们项目在任何浏览器中使用没有问题啊,就是这样做的。
@Jeffcky: 文档中说可以限制域名 这个必须做到 白名单 才正常
@SpeakHero: 肯定的。