gpt4 book ai didi

ajax - 为什么 ExtJS 向同一个域发送 OPTIONS 请求?

转载 作者:行者123 更新时间:2023-12-04 05:32:45 24 4
gpt4 key购买 nike

我正在一个域上加载我的脚本并使用 POST 发送一些数据以及Ext.Ajax.request()的使用到同一个域。

不知何故,开发工具告诉我,有一个失败的 OPTIONS要求。

Request URL : myurl-internal.com:8090/some/rest/api.php

Request Headers
Access-Control-Request-Headers : origin, x-requested-with, content-type
Access-Control-Request-Method : POST
Origin : http://myurl-internal.com:8090

它既是 HTTP 又不是 HTTPS。相同的端口,相同的主机......我不知道它为什么这样做。
服务器无法处理这些东西,因此请求失败,整个系统停止工作。

最佳答案

它并不是 Ext JS 特有的——参见 these related threads跨其他框架。这是服务器正确执行 CORS标准:

for HTTP request methods that can cause side-effects on user data (in particular, for HTTP methods other than GET, or for POST usage with certain MIME types), the specification mandates that browsers “preflight” the request, soliciting supported methods from the server with an HTTP OPTIONS request header, and then, upon “approval” from the server, sending the actual request with the actual HTTP request method.



如果您打算使用 CORS,您需要能够正确处理或忽略服务器上的这些请求。 Ext JS 本身并不关心 OPTIONS 请求——你会像预期的那样收到响应,但除非你对它们做些什么,否则它们只会被忽略(假设服务器实际上允许你尝试做的任何事情)。

如果您不打算使用 CORS(听起来您不是故意跨域),那么您需要弄清楚为什么服务器认为原始域不同(我不确定)。您还可以使用 JsonP(通过 Ext 的 JsonP 代理)完全绕过 CORS。

关于ajax - 为什么 ExtJS 向同一个域发送 OPTIONS 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12265921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com