이것을 이해하기 위해 나는 asp.net 의 샘플 응용 프로그램을 사용하고 있으며이를 실행하고 예제 페이지를 사용하면 모든 것이 잘 작동합니다.asp.net app from api, Oauth 인증
그런 다음 mvc 스캐 폴딩을 사용하는 새 빈 asp.net 프로젝트를 만들고 2 개의 다른 레이어로 시나리오를 다시 만듭니다. 나는이 양식 작업을 사용하여 등록 할 수있어 :
<form method="post" action="https://localhost:44305/api/Account/Register">
<h3>Register</h3>
<div class="form-group">
<label>Email</label>
@Html.TextBoxFor(m => m.Email, new { id = "txtUserName", @class = "form-control" })
</div>
<div class="form-group">
<label>Password</label>
@Html.PasswordFor(m => m.Password, new { id = "txtPassword", @class = "form-control" })
</div>
<div class="form-group">
<label>Confirm Password</label>
@Html.PasswordFor(m => m.ConfirmPassword, new { id = "txtConfirmPassword", @class = "form-control" })
</div>
<div class="form-group">
<button type="submit" class="btn btn-default">Register</button>
</div>
</form>
을하지만 난 때 그것은 내가 쿼리 문자열로 입력 한 사용자 이름/암호와 같은 페이지로 리디렉션 로그인하기 : (http://localhost:57972/?Email=username&Password=password)
<div class="form-group">
<label>Email</label>
@Html.TextBoxFor(m => m.Email, new { id = "txtloginUserName", @class = "form-control" })
</div>
<div class="form-group">
<label>Password</label>
@Html.PasswordFor(m => m.Password, new { id = "txtloginPassword", @class = "form-control" })
</div>
<div class="form-group">
<button id="btnLogin" class="btn btn-default">Log In</button>
</div>
<script>
var token = "";
$('#btnLogin').click(function() {
var username = $('#txtloginUserName').val();
var password = $('#txtloginPassword').val();
$.ajax({
type: 'POST',
url: 'http://localhost:26812/Token',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: {
grant_type: 'password',
username: username,
password: password
},
success: function (data) {
token = data.access_token;
}
})
});
</script>
** 업데이트
내가/Token에 대한 전체 URL을 호출해야한다는 것을 깨달았으며 이제 로그인하여 네트워크 상태를 200 OK 코드로 응답하지만 콘솔에서 오류가 발생합니다. "아니오 'Access-Control-Allow-Origin'헤더 요청한 자원에 있습니다. 원산지 'http://localhost:57972는'그러므로 액세스가 허용되지 않는다 "
내 webapiconfig에 config.EnableCors()를 추가 한, 내가 테스트 목적으로 모두 허용하는 내 apicontroller에 주석을 추가 한 :.
[EnableCors(origins: "*", headers:"*", methods:"*")]
확인하는 것은'사전 fligh에서 아무 '액세스 제어 - 허용 - Origin'' 오류입니다 'OPTIONS' 요청, 맞죠? – Searching
이상한 부분은 POST 요청 자체가 OK를 반환하고 그 오류를 throw하지만 로그에는 한 요청 만 표시되며 POST입니다. –
MVC API를 사용하여'Access-Control-Allow-Origin'을 둘러싼 많은 질문이 있습니다. OPTIONS에서이 기능을 사용하지 않는 것이 좋습니다. ajax 요청의'datatype'을'dataType : "jsonp"'으로 설정하고 아직도이 문제가 있는지보십시오. – Searching