前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

这篇具有很好参考价值的文章主要介绍了前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 1. 引言
  • 2. 跨源资源共享和实现方法
  • 3. 在Django项目中配置django-cors-headers库
    • Reference

1. 引言

在进行后端API开发时,有时会遇到“跨域资源共享 (CORS) 请求...被阻止“的错误,如图1所示。本文讲解如何在使用DRF(Django REST Framework)的后端API开发项目中解决这个问题。

A cross-origin resource sharing (CORS) request was blocked because of invalid or missing response headers of the request or the associated preflight request .
...

2. 跨源资源共享和实现方法

跨源资源共享(Cross-Origin Resource Sharing)是一种机制,允许在Web浏览器的安全性限制下,从一个域(网站)的客户端向另一个域的服务器发送跨域HTTP请求。

DRF官方给出有关跨域资源共享的两种实现方式:
(1)在 REST 框架中处理 CORS 的最佳方法是在中间件中添加所需的响应标头,这种方式透明地支持 CORS,无需更改视图中的任何行为。
(2)使用django-cors-headers。

Cross-Origin Resource Sharing is a mechanism for allowing clients to interact with APIs that are hosted on a different domain. CORS works by requiring the server to include a specific set of headers that allow a browser to determine if and when cross-domain requests should be allowed.

The best way to deal with CORS in REST framework is to add the required response headers in middleware. This ensures that CORS is supported transparently, without having to change any behavior in your views.

Adam Johnson maintains the django-cors-headers package, which is known to work correctly with REST framework APIs.

3. 在Django项目中配置django-cors-headers库

(1)使用pip在环境中安装django-cors-headers库:

python -m pip install django-cors-headers

(2)在setting.py文件的INSTALLED_APPS中添加"corsheaders"

INSTALLED_APPS = [
    ...,
    "corsheaders",
    ...,
]

(3)在setting.py文件的MIDDLEWARE中添加中间件类用于监听响应:

MIDDLEWARE = [
    ...,
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    ...,
]

(4)在setting.py文件中添加变量CORS_ALLOWED_ORIGINS并设置为True.

CORS_ALLOWED_ORIGINS = True

以上步骤完成后,前端调用后端DRF API时所出现的CORS错误就被消除了。

Reference

AJAX, CSRF & CORS - Django REST framework
GitHub - adamchainz/django-cors-headers: Django app for handling the server headers required for Cross-Origin Resource Sharing (CORS)文章来源地址https://www.toymoban.com/news/detail-857592.html

到了这里,关于前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Flask-CORS实现跨域资源共享

    如何使用Flask-CORS实现跨域资源共享 引言: 在网络应用开发中,跨域资源共享(Cross Origin Resource Sharing,简称CORS)是一种机制,允许服务器与指定的来源或域名之间共享资源。使用CORS,我们可以灵活地控制不同域之间的数据传输,实现安全、可靠的跨域访问。在本文中,我们

    2024年02月14日
    浏览(30)
  • CORS跨域资源共享漏洞的复现、分析、利用及修复过程

    CORS跨域资源共享漏洞与JSONP劫持漏洞类似,都是程序员在解决跨域问题中进行了错误的配置。攻击者可以利用Web应用对用户请求数据包的Origin头校验不严格,诱骗受害者访问攻击者制作好的恶意网站, 从而跨域获取受害者的敏感数据,包括转账记录、交易记录、个人身份证号

    2024年02月07日
    浏览(87)
  • 第40篇:CORS跨域资源共享漏洞的复现、分析、利用及修复过程

    CORS跨域资源共享漏洞与JSONP劫持漏洞类似,都是程序员在解决跨域问题中进行了错误的配置。攻击者可以利用Web应用对用户请求数据包的Origin头校验不严格,诱骗受害者访问攻击者制作好的恶意网站, 从而跨域获取受害者的敏感数据,包括转账记录、交易记录、个人身份证号

    2024年02月11日
    浏览(27)
  • 通过HTTP隧道在Linux上实现跨域资源共享(CORS):打破数字世界的“门禁”

    在数字世界里,有时你会碰到一些“门禁”,它们阻止你访问某些资源,就像现实生活中的门禁系统一样。这些“门禁”就是所谓的跨域资源共享(CORS)限制。不过别担心,我们有一个绝妙的解决方案:通过HTTP隧道在Linux上实现CORS,让你轻松跨越这些“门禁”,畅游数字世

    2024年02月21日
    浏览(35)
  • Python flask跨域支持(Access-Control-Allow-Origin(CORS)跨域资源共享(访问控制允许来源:允许指定的来源进行跨域请求)浏览器同源策略、OPTIONS预检请求

    浏览器的同源策略(Same-Origin Policy)限制了跨域请求,如果不进行特殊处理,跨域请求将被浏览器拦截。 接口支持跨域能够允许浏览器跨域请求不被浏览器拦截。 下面是跨域请求的一些影响、优点和缺点: 优点 允许不同域名下的应用程序进行数据交互,提高了系统的灵活性

    2024年02月11日
    浏览(33)
  • 本地前端代理连接服务器后端gateway api浏览器提示cors跨域,如何解决?

    🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家 关注收藏订阅 !持续更新中,up!up!up!!   本地前端代理连接服务器后端gateway api浏览器提示

    2024年04月12日
    浏览(45)
  • 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错

    已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 控制台仍然出现cors禁止报错,接口调不通 配置proxy代理解决跨域问题的原理是: 前端工程本地环境会启动一个 express 或 koa 的

    2024年02月01日
    浏览(52)
  • postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

    最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况,因此,Postman的mock数据功能就用了,确实好用。 Set

    2024年02月11日
    浏览(39)
  • 后端使用response.reset()导致出现跨域问题

    今天联调文件下载的接口,由于自己用postman测试一直都没问题,但是在和前端联调的时候前端就会出现如下跨域的报错,但是项目是做了统一的跨域处理的,代码类似于下面: 但是项目是做了统一的跨域处理的,后来通过查询资料,发现是response.reset();导致的,正常的respo

    2024年01月18日
    浏览(25)
  • 本地HTML访问后端获取数据使用@CrossOrigin仍出现跨域问题

    Access-Control-Allow-Credentials 这个头的作用,果然药到病除。这个是服务端下发到客户端的 response 中头部字段,意义是允许客户端携带验证信息,例如 cookie 之类的。这样客户端在发起跨域请求的时候,不就可以携带允许的头,还可以携带验证信息的头,又由于客户端是请求框架

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包