如果我直接向localhost api请求,它将正常工作。 如果我直接向托管的api请求,它将正常运行。 但是,如果我从同一域中的网站发出请求,则无法正常运行。
当我从网站向使用相同api的另一个托管域发出请求时,它也起作用。
我也尝试了一个带有javascript请求的网站。首先,我没有工作,但是在添加<add name="Access-Control-Allow-Origin" value="*" />
之后,它确实可以工作。
很明显,问题与子域有关。如何执行相同域的网站请求以获取控制器的响应?看起来与路由有关。
谢谢
答案 0 :(得分:0)
感谢您的建议。
我尝试设置CORS设置。我遵循这份文件(https://docs.microsoft.com/tr-tr/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api)
我忘了说我的第一篇文章。网站(https://domain.com.tr)适用于https,而api(http://api.domain.com.tr)适用于http
这些步骤已应用
config.EnableCors();
添加了webapi项目[EnableCors(origins: "https://domain.com.tr", headers: "*", methods: "*")]
在webapi项目的ValuesController顶部添加了ApiController 然后我从其他项目https://domain.com.tr发出请求,但再次失败,这是我的下面的代码
/***NOT WORK***/
string apiUrl = "http://api.domain.com.tr/api/";
/***WORK PROPERLY***/
//string apiUrl = "http://otherdomain.com/api/";
/***WORK PROPERLY***/
//string apiUrl = "http://localhost:57232/api/";
IEnumerable<Modul> students = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(apiUrl);
//HTTP GET
var responseTask = client.GetAsync("GetPages");
responseTask.Wait();
/***AFTER THİS LINE GIVE ERROR***/
var result = responseTask.Result;
在此处输入图片描述