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

前端之家收集整理的这篇文章主要介绍了ajax – 为什么ExtJS向同一个域发送OPTIONS请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在一个域上加载我的脚本并使用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相关文章