Я пытаюсь интегрировать разные технологии (каждый домен) и создавать действия RESTfull. Например, у меня есть клиент (Apache Cordova) и сервер (.NET framework 4.6.1). В методе WebGet все работает нормально, а в других методах нет. Это мой тестовый код для действия входа.
Javascript (угловой)
$http({
method: 'Put',
url: $rootScope.url + '/Login'
}).then(function successCallback(response) {
}, function errorCallback(response) {
});
переменная $rootScope.url имеет URL-адрес, на котором работает сервер.
С# MVC .NET
[HttpPut]
[AllowAnonymous]
public async Task<ActionResult> Login()
{
try
{
var result = await SignInManager.PasswordSignInAsync("test3", "1!2@Qa", false, shouldLockout: false);
return null;
}
catch (Exception ex)
{
throw ex;
}
}
Когда я делаю этот звонок в сети, я получаю это
http://localhost:4400/xhr_proxy?rurl=http%3A//localhost%3A49266/App//Login.
Погуглив, я пришел к выводу, что политика того же происхождения является причиной сбоя этого вызова AJAX.
Просматривая эту статью, я понимаю, почему мы должны используйте КОРС. Но я не понимаю, как это идеальный способ использовать их в производственной среде.
Как я могу быть уверен, что мой сервер будет принимать звонки только от моего клиента? Мне нужно добавить собственный заголовок к клиентским вызовам javascript, который сервер проверит, существует ли?
Я нашел несколько решений, таких как HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
or
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
Но я думаю, что таким образом я позволю любому сайту с javascript выполнять действия на сервере.
Как создать защищенную политику cors?