当前位置: 首页 > 面试题库 >

Chrome中的AJAX发送选项而不是GET / POST / PUT / DELETE吗?

宋洲
2023-03-14
问题内容

我正在工作一个内部Web应用程序。在IE10中,请求工作正常,但在Chrome中,所有AJAX请求(很多)都是使用OPTIONS发送的,而不是我提供的任何已定义方法。从技术上讲,我的要求是“跨​​域”。该站点位于localhost:6120上,我向AJAX发出请求的服务位于57124上。此关闭的jquery错误定义了该问题,但不是真正的解决方法。

如何在ajax请求中使用正确的http方法?

编辑:

这在每页的文档加载中:

jQuery.support.cors = true;

每个AJAX的构建方式都类似:

var url = 'http://localhost:57124/My/Rest/Call';
$.ajax({
    url: url,
    dataType: "json",
    data: json,
    async: true,
    cache: false,
    timeout: 30000,
    headers: { "x-li-format": "json", "X-UserName": userName },
    success: function (data) {
        // my success stuff
    },
    error: function (request, status, error) {
        // my error stuff
    },
    type: "POST"
});

问题答案:

Chrome正在预检查找CORS标头的请求。如果请求可以接受,它将发送真实请求。如果您正在执行此跨域操作,则只需处理它,否则将找到一种使请求成为非跨域请求的方法。这就是为什么jQuery
Bug无法修复而关闭的原因。这是设计使然。

与简单请求(如上所述)不同,“预检”请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可以安全发送。跨站点请求这样被预检,因为它们可能会影响用户数据。特别是在以下情况下,请求将被预检:

  • 它使用GET,HEAD或POST以外的方法。同样,如果POST用于发送请求类型为application / x-www-form-
    urlencoded,multipart / form-data或text / plain以外的Content-
    Type的请求数据,例如POST请求将XML有效负载发送给服务器使用application / xml或text / xml,则对请求进行预检。

  • 它在请求中设置自定义标头(例如,请求使用标头,例如X-PINGOTHER)


 类似资料:
  • 我试图通过PHP后端更新/插入MySQL数据库中的数据。我正在用AngularJS构建前端,并使用服务与REST API通信。 我的设置如下所示: 我正在通过$http提供商设置标头: POST Call如下所示: Chrome中的开发控制台向我展示了以下内容: 当我从POST转换为PUT时,我发送的是期权看涨期权,而不是PUT。而内容类型只切换到。 我的请求有效负载作为对象发送: 如何正确设置标

  • 问题内容: 到目前为止,我一直在使用: 谢谢 编辑:我为可能遇到此页面的任何人提供了一种解决方案,以演示如何使用POST而不是GET。如果您不熟悉AJAX,建议您首先使用GET方法向本教程http://www.w3schools.com/PHP/php_ajax_php.asp推荐。 解- javascript: 的PHP: 由于有关使用POST和GET的原因-请参见注释。 问题答案: 您显示的查

  • 问题内容: 我正在使用HttpClient发出发布请求。我回到405方法不被允许。在提琴手中捕获轨迹时,它作为GET而不是POST发出! 我知道异步/等待问题。这是显示问题的简化示例。 是否存在某种可能会影响此的web.config或machine.config设置?其他请求(通过RestSharp发送)正确发送了帖子 这是提琴手捕获的东西。在提琴手中运行跟踪也会返回405(如预期)。手动将其切换

  • 我对Java服务器端编程还不熟悉,我的问题基本上是使用Servlets(低级别,不使用spring mvc等)开始一个起点,然后从node开始构建。js后台,其中路由定义将以函数(,等),函数将在http方法之一(GET、post、PUT、DELETE)的参数中接收和。 如果有人可以帮助我,从一个servlet类中的路由(比如说)开始定义方法,这个servlet类映射到http方法,同时在其参数中

  • 问题内容: 因此,我一直在浏览有关创建REST API的文章。其中一些建议使用所有类型的HTTP请求:like 。我们将创建例如 index.php 并以这种方式编写API: 好的,理所当然-我对Web服务还不太了解。但是,通过常规或(包含方法名称和所有参数)接受 JSON 对象,然后也以JSON进行响应,会不会更容易。我们可以轻松地通过PHP进行序列化/反序列化,并且无需处理不同的HTTP请求方

  • 我正在测试一个简单的后端,在SpringBoot架构的帮助下使用RESTfulWeb服务。现在我已经完成了后端,但是我无法使用访问、和方法(其他http方法工作-和) 用户控制器类 应用初始化器类 证券配置 MyUserDetails服务 JWTRequestFilter CORS滤波器 我发送了POSThttp://localhost:8080/api/v1/users{'name':'Char