사용자가 로그인해야하는 ASP.NET MVC5로 작성된 응용 프로그램에서 작업 중입니다. 인증은 중앙 인증 서비스 (CAS)에서 작동합니다. 나는 사용자의 데이터를 업데이트 할 때이 컨트롤러의 액션을 호출부분보기에서 사용자를 리디렉션하려고 할 때 CORS 오류가 발생합니다.
: 홈페이지, 나는 여러 부분적인 전망이 있습니다.
CAS 세션이 만료 될 때까지 제대로 작동합니다. 나는 부분 뷰를 다시 시도하면, 나는 오류 얻을 :
"옵션을 https://example.com/CAS/Authentication 403 (금지)"
"로드 할 수 없습니다 https://example.com/CAS/Authentication : 프리 플라이트에 대한 응답이 잘못 HTTP 상태 코드가 403"
Ajax를 사용하여 부분 뷰를 새로 고치면 같은 도메인에 있지 않은 로그인 페이지가 반환된다고 생각합니다. 이 문제를 어떻게 극복 할 수 있습니까?
내보기에서 컨트롤러에 데이터를 보내려면 Ajax.BeginForm()
으로 내 컨트롤러가 부분 뷰를 반환하므로 페이지를 완전히 새로 고칠 필요가 없습니다.
소리가 적당합니다. 사용자가 로그인하지 않은 경우보기를 부분적으로 요청할 수 없어야합니다. 전체 로그인 페이지가 있다면 아약스를 통해 요청할 수 없어야하며, 로그인 페이지로 리디렉션해야 다른 작업을 수행 할 수 있습니다. 그래, 상황이 이치에 맞다. 대신에 당신이 원하거나 기대할 것으로 예상되는 것이 불분명합니까? – ADyson
어쩌면 다른 곳에서 문제가 발생했을 수 있습니다 ... 사용자가 로그인하지 않았 으면 로그인 페이지로 올바르게 리디렉션됩니다 (로그인 페이지가 올바르게 반환 됨). 그러나 부분 뷰와 관련하여 로그인 페이지가 부분 뷰에서 직접 반환되어 부분 뷰를 새로 고치기 위해 Ajax를 사용하기 때문에 Cross Origin Request 오류가 발생합니다. – Mnevis
"로그인 페이지가 부분 뷰에서 직접 반환됩니다". 자, 아약스가 당신을 리디렉션 할 수 없기 때문입니다. 아약스 요청의 경우 해당 시나리오에서 직접 오류 (일종의 403 페이지)를 반환해야합니다. 그런 다음 클라이언트 측 스크립트가 리디렉션을 처리해야합니다. – ADyson