解决COR跨域发送cookie值问题

在 Web 页面中可以随意地载入跨域的图片、视频、样式等资源, 但 AJAX 请求通常会被浏览器应用同源安全策略,禁止获取跨域数据,以及限制发送跨域请求。 虽然有多种方法利用资源标签进行跨域,但能够进行的数据交互非常有限。 在 2014 年 W3C 发布了 CORS Recommendation 来允许更方便的跨域资源共享。 默认情况下浏览器对跨域请求不会携带 Cookie,但鉴于 Cookie 在身份验证等方面的重要性, CORS 推荐使用额外的响应头字段来允许跨域发送 Cookie

前端代码配置:

在open XMLHttpRequest后,设置withCredentials为true即可让该跨域请求携带 Cookie。 注意携带的是目标页面所在域的 Cookie。

var xhr=newXMLHttpRequest();

xhr.open('GET',url);

xhr.withCredentials=true;

xhr.send();


后端django配置:

1.安装django-cors-headers

pip install django-cors-headers

2.配置settings.py文件

a.添加应用

INSTALLED_APPS = [

    'corsheaders',

]

b.添加中间件

MIDDLEWARE = [

    'corsheaders.middleware.CorsMiddleware',

    'django.middleware.common.CommonMiddleware',

]

c.其他配置

# 配置允许跨站访问本站的地址

CORS_ORIGIN_ALLOW_ALL = True

# CORS_ORIGIN_WHITELIST = (

#    'localhost:8000',  # 请求的域名(此处仅在CORS_ORIGIN_ALLOW_ALL = False时有效)

# )

# 定义允许的匹配路径正则表达式

CORS_URLS_REGEX = '^.*$'

# 设置允许访问的方法

CORS_ALLOW_METHODS = (

    'GET',

    'POST',

    'PUT',

    'PATCH',

    'DELETE',

    'OPTIONS',

)

# 跨域允许证书

CORS_ALLOW_CREDENTIALS = True

# 设置允许的header

CORS_ALLOW_HEADERS = (

    'Klicen-Agent',

    'Content-Type',

    'X-Requested-With',

    'xyt-agent',

)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容