我想实现单点登录采用了棱角分明,Django的,IIS服务器。
在IIS Windows身份验证功能。
角拦截代码:
intercept(req: HttpRequest<any>, next: HttpHandler):Observable<HttpEvent<any>> {
console.log("in intercept")
req = req.clone({
withCredentials: true });
return next.handle(req); }
Django的settings.py
:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',]
AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.RemoteUserBackend',)
CORS_ORIGIN_ALLOW_ALL = True
ALLOWED_HOSTS = ["*"]
收到错误:(IP地址)已被封锁CORS政策:回应预检要求未通过访问控制检查:没有“访问控制允许来源”标头出现在所请求的资源。
尝试在settings.py这个配置
CORS_ORIGIN_ALLOW_ALL =真CORS_ALLOW_CREDENTIALS =真
CORS_ALLOW_CREDENTIALS =真#这一个是当您使用withCredentials要求:真
将位于Django的设置问题,请看看这个链接:https://stackoverflow.com/a/38162454/4587598
如果在第一次尝试将无法正常工作,剥离从无到有所有settings.py
和设置,如果不发生CORS问题,之后添加验证的复杂性首先检查。
尝试django-cors-headers pip install django-cors-headers
并设置它在你settings.py
INSTALLED_APPS = (
...
'corsheaders',
...
)
您还需要添加一个中间件类来偷听的反应:
MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CorsMiddleware应放在尽可能高的,特别是可以产生如Django的CommonMiddleware回应任何中间件之前
CORS_ORIGIN_ALLOW_ALL = True