基于django 的后端上传文件接口的局域网服务器部署

目标:自己做着玩的,在同一局域网下,前端在一台主机,后端应用在另一台主机上,为了测试后端的上传文件接口功能,需要将后端当做服务器部署,以便前端能够进行测试。

对于局域网部署,可以使用如Nginx或Apache这样的Web服务器来托管你的Django应用。但为了简化部署,也可以直接使用Django自带的开发服务器(但请注意,这仅适用于开发环境,不建议用于生产环境)。
本文是自己做着玩,所以使用Django开发服务器

使用django开发服务器

确保你的Django项目可以通过python manage.py runserver 0.0.0.0:8000运行,其中0.0.0.0表示监听你本机所有可用的网络接口,也可改为你本机IP就行。8000是端口号。
记住,Django的开发服务器不是为生产环境设计的,它不支持并发处理,也没有进行安全加固。

django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: ‘后端IP/端口’. You may need to add ‘后端IP’ to ALLOWED_HOSTS

然后在前端浏览器输入后端IP加端口访问,报错。
django.core.exceptions.DisallowedHost: Invalid HTTP_HOST header: '后端IP/端口'. You may need to add '后端IP' to ALLOWED_HOSTS.
这个错误 django.core.exceptions.DisallowedHost 是 Django 在其安全设置中防止 HTTP Host 头被伪造的一种机制。当 Django 收到一个请求时,它会检查 HTTP_HOST 头部是否包含在你的项目的 ALLOWED_HOSTS 设置中。如果不在,Django 会拒绝该请求并抛出这个异常。
这意味着 Django 接收到一个请求,其 HTTP_HOST 头部为 后端:端口,但你的 ALLOWED_HOSTS 设置中没有包含这个值(或者只包含了不包含端口的 IP 地址)。

要解决这个问题,你只需要更新 ALLOWED_HOSTS 设置:
在你的 Django 项目的 settings.py 文件中,找到 ALLOWED_HOSTS 设置并更新它。如果你想要允许来自任何 IP 地址的请求(这通常不推荐用于生产环境,因为它会降低安全性),你可以设置为 ['*']。但是,对于局域网测试,你可以将具体的 IP 地址(不包括端口号)添加到列表中。例如:

ALLOWED_HOSTS = ['后端IP']

即可成功访问

前端发送的post请求,后端只接收到了来自前端的option请求

出现问题:后端只接收到了来自前端的option请求,明明期望发送post请求。
在HTTP请求中,当你看到前端发送了一个OPTIONS请求而不是预期的POST请求时,这通常与CORS(跨源资源共享)策略有关,特别是预检请求(preflight request)。预检请求是CORS协议的一部分,用于检查实际请求(如POST、PUT、DELETE等)是否安全,以及服务器是否允许来自特定源的这些类型的请求。

只需配置CORS策略:

settings.py中,你可以设置CORS_ORIGIN_ALLOW_ALLTrue来允许来自任何源的请求,或者更具体地,使用CORS_ORIGIN_WHITELIST来指定允许的源。


# 允许来自任何源的请求(不安全,仅用于测试)  
CORS_ORIGIN_ALLOW_ALL = True  
  
# 或者指定允许的源  
CORS_ORIGIN_WHITELIST = [  
    "http://example.com",  
    "http://www.example.com",  
]

特殊情况

同时,因为本文后端应用代码中指定了一个特殊的请求头content-disposition,故还需在
CORS_ALLOW_HEADERS =()里加上'content-disposition',才可。

至此,前后端能够在不同的主机上进行交互。

本人承接各种计算机项目,价格普通大学生就能接受,物美价廉,质量可靠,包让老师和客户满意。欢迎联系,私信即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值