gpt4 book ai didi

javascript - 使用 WebAPI 访问控制允许来源

转载 作者:行者123 更新时间:2023-12-02 16:40:54 26 4
gpt4 key购买 nike

我阅读了很多有关此问题的帖子,但找不到解决方案。

我使用 2 种方法创建了简单的 Web-API 服务项目:GETPUT

使用这个guid我定义了我的服务来启用 cors,没有任何限制:

  1. 将以下属性放在 Controller 类上方:

    [EnableCors(来源:“*”, header :“*”,方法:“*”,SupportsCredentials = true)]

  2. WebApiConfig类中我放置了以下配置:

        var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);

    Get 方法运行良好,我使用以下代码从 JS 调用它:

enter image description here

PUT 方法的调用由以下代码定义:

   var addUser = function(domain, firstname, lastname, idsid){
var config = {
withCredentials: true,
headers: {
'Content-Length': '4096'
}};
return $http.put('http://server:port/api/controller/Put?domain=dom&lastName=lastN&firstName=firstN', config);
};

问题是这样的:我的 PUT 方法在具有相同 cors 设置的同一 Controller 下定义,引发以下异常:

XMLHttpRequest 无法加载 http://server:port/api/controller/Put?domain=dom&lastName=lastN&firstName=firstN'。请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问源“http://localhost:9444”。响应的 HTTP 状态代码为 400

为什么会发生这种情况?我将整个 Controller 设置为接受 cors 请求,但 Put 方法拒绝工作。怎么解决呢?

最佳答案

您是否使用 Angular 来处理 JavaScript 客户端请求?因为在 Angular 中,“$http.put”的第二个参数是请求的对象:put(url, data, [config]);因此,尝试在对象中转换您的 querystrig 值,如下所示:

var requestObject = {
domain: domain,
lastName: lastName,
firstName : firstName
};

然后发送它,如下所示:

return $http.put('http://server:port/api/controller/Put', requestObject, config);

如果理解有误,请见谅,希望对您有帮助!再见。

关于javascript - 使用 WebAPI 访问控制允许来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520743/

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