我构建了一个使用Django API REST端点的Ionic 4应用程序。
该应用程序已经使用ionic-app-scripts在iPad和本地主机上进行了测试。
现在,我想将其部署为Web应用程序,并且通过构建用于浏览器平台(ionic cordova构建浏览器--prod --release)并在同一Django应用程序中提供index.html来实现此目的API REST已开启。静态文件(js,资产等托管在Amazon S3存储桶上)
现在在iPad和localhost上,API REST POST请求都没有问题。但是当我在实时服务器上运行该应用程序时(即使请求是从与API REST相同的服务器发送的!),我得到403 ...
比较请求标头时,我看到的唯一区别是在实时服务器上发送的请求标头没有“ Origin”参数:
在线服务器上
Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control no-cache
Connection keep-alive
Content-Length 62
content-type application/json
Cookie _ga=GA1.2.1002502516.149305462…eay6lysy1w44vawa94lug20hpek2n
Host example.com
Pragma no-cache
Referer http://example.com/front/
User-Agent Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/60.0
在本地主机上
Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Content-Length 62
content-type application/json
Host example.com
Origin http://localhost:8100
Referer http://localhost:8100/
User-Agent Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/60.0
有什么想法吗?我知道有关此主题的问题和帖子很多,但总的来说,问题是相反的(从其他域发送帖子时出现CORS问题)
(显然example.com不是我正在使用的真实域)
答案 0 :(得分:0)
发现了问题,我安装了Django身份验证系统,并以此登录。当我注销时,它可以正常工作。似乎正在发送带有请求中Cookie的csrf令牌,这引起了冲突。