菜鸟教程小白 发表于 2022-12-11 20:00:20

linux - 来自 iOS 的 OPTIONS 请求


                                            <p><p>我在 Django 上有一个 Web 应用程序,它对服务器进行大量异步调用。</p>

<p>它在除 Safari 之外的所有浏览器上都运行良好,特别是在用户报告至少有间歇性问题的 iOS 上。</p>

<p>看来问题可能源于 Safari 发送 <code>OPTIONS</code> 请求。这是来自 Apache 日志的片段(为匿名而编辑):</p>

<blockquote>
<p>172.31.34.143 - - &#34;OPTIONS /asyncservice/ HTTP/1.1&#34; 500 245 &#34;<a href="http://www.example.com/app/" rel="noreferrer noopener nofollow">http://www.example.com/app/</a>&#34; &#34;Mozilla/5.0 (iPhone;
CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like
Gecko) Version/10.0 Mobile/14F89 Safari/602.1&#34;</p>
</blockquote>

<p>有没有人遇到过这种情况,有解决办法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我可能已经解决了这个问题。</p>

<p>有一个由发送 Django CRSF (Cross Site Request Forgery) 保护头的 JavaScript 设置的请求头。</p>

<p>Safari 看到此 header ,无法识别它并发送所谓的预检请求,即 OPTIONS 请求。</p>

<p>Apache 拒绝此请求,理由是 Safari 没有通过 OPTIONS 请求发送正确的来源(为什么它不是模糊的 - 在我看来,它真的像 Safari 中的一个错误。)</p>

<p>Safari 得到 500 并断定 POST 请求是欺诈性的并拒绝发送。</p>

<p>鉴于发出请求的原因是 Safari 无法识别 Django CRSFheader ,因此允许 Apache 从任何来源接收并信任 Django 使用 CRSF 处理错误请求似乎是合理的。</p>

<p>所以,我已将 Apache 配置为允许来自任何来源,如下所示:</p>

<blockquote>
<pre><code>Header add Access-Control-Allow-Origin &#34;*&#34;
Header add Access-Control-Allow-Headers &#34;origin, x-requested-with, content-type&#34;
Header add Access-Control-Allow-Methods &#34;PUT, GET, POST, DELETE, OPTIONS&#34;
</code></pre>
</blockquote>

<p>到目前为止,这些 500 年代还没有出现,而是早期。</p></p>
                                   
                                                <p style="font-size: 20px;">关于linux - 来自 iOS 的 OPTIONS 请求,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44844266/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44844266/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: linux - 来自 iOS 的 OPTIONS 请求