через сайт, где я разместил свой сайт на Vercel
когда я вызываю через это методы получения, но методы публикации не работают
поскольку
бэкенд API находится в моей системе
когда я звоню
Код: Выделить всё
const onCreateCustomer = async (event) => {
event.preventDefault();
//setLoading(true);
setError(null);
const formData = new FormData();
formData.append("name", customer.c_name);
formData.append("email", customer.c_email);
formData.append("password", customer.c_password);
formData.append("phone", customer.phoneno);
formData.append("address", customer.address);
formData.append("disease", customer.disease);
if (lat !== null && lon !== null) {
formData.append("latitude", lat);
formData.append("longitude", lon);
}
try {
const response = await fetch(
`https://www.quettacafe.com/FoodDeliverySystems/api/customer/signup`,
{
method: "POST",
body: formData,
headers: {
Accept: "*/*",
},
}
);
if (!response.ok) {
const errorData = await response.json();
throw new Error(
errorData.message || `HTTP error! Status: ${response.status}`
);
}
const data = await response.json();
console.log("Signup response:", data);
const latestCustomer = await fetchLatestCustomer(lat, lon);
navigate("/LoginCustomer");
} catch (error) {
console.error("Signup error:", error);
setError(error.message);
} finally {
setLoading(false);
}
};
Код: Выделить всё
[HttpPost]
public HttpResponseMessage Signup()
{
try
{
var httpRequest = HttpContext.Current.Request;
// Retrieve form data
var name = httpRequest.Form["name"];
var email = httpRequest.Form["email"];
var password = httpRequest.Form["password"];
var phone = httpRequest.Form["phone"];
var address = httpRequest.Form["address"];
var latitude = httpRequest.Form["latitude"];
var longitude = httpRequest.Form["longitude"];
var disease = httpRequest.Form["disease"];
var account = db.customer.Where(s => s.email == email).FirstOrDefault();
if (account != null)
{
return Request.CreateResponse(HttpStatusCode.OK, "Already exists");
}
else
{
customer cus = new customer()
{
name = name,
email = email,
password = password,
phone = phone,
address = address,
disease=disease
};
db.customer.Add(cus);
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.Created, cus);
}
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}
Я добавил строку, включающую коры
POST https://www. quettacafe.com/FoodDeliverySystems/api/customer/signup 405 (Метод не разрешен)
мой маршрут настроен правильно, вот мой маршрут.config
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Fooddeliverysystems
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
Код: Выделить всё
[EnableCors(origins: "*", headers: "*", methods: "*")]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Cors;
namespace Fooddeliverysystems
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
я пытался добавлять заголовки
как из внешнего, так и из внутреннего интерфейса
Я изменил URL-адрес на http localhost
он работает локально на локальном веб-сайте
но с моего домена www.quettacafe.com он не работает
другие мои методы get работают правильно
Подробнее здесь: https://stackoverflow.com/questions/786 ... ds-working