标签: http-delete

protect_from_forgery不保护PUT/DELETE请求

我制作了一个演示应用程序,rails new demo然后生成了一个脚手架用户控制器rails generate scaffold User name:string email:string.脚手架代码中有一个ApplicationControllerprotect_from_forgery,所以不会UserController从派生ApplicationController.

我运行webrick,添加一个用户,很酷.真实性令牌的工作方式与/ on上的POST一致.

然而,仍然使用Rails 3.0.5我能够做到:

niedakh@twettek-laptop:~$ telnet 10.0.0.4 3000
PUT /users/3 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

user[name]=vvvvv&user[email]=shiaus.pl
Run Code Online (Sandbox Code Playgroud)

并且在不给出令牌的情况下修改用户3:

Started PUT "/users/3" for 10.0.0.4 at 2011-04-02 14:51:24 +0200
  Processing by UsersController#update as HTML
  Parameters: {"user"=>{"name"=>"vvvvv", "email"=>"shiaus.pl\r"}, "id"=>"3"}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1
', "updated_at" = '2011-04-02 12:51:24.437267' WHERE "users"."id" = 3s.pl
Redirected to http://10.0.0.4:3000/users/3 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails http put protect-from-forgery http-delete

1
推荐指数
1
解决办法
1492
查看次数

使用哪种 HTTP 方法:PUT 或 DELETE?

我想使用适合以下场景的适当方法来设计我的休息端点。

有一个团体。每个小组都有成员。会员必须经过群管理员批准才能成为会员。如果管理员拒绝,用户将无法成为该组的成员。

我有以下端点来解决这种情况。

  1. 当用户加入群组时 POST /projects/api/v1/projects/{project id}/members/{member id}

  2. 用于 PUT /groups/api/v1/groups/{group id}/members/{member id}/approve批准会员资格

但是,我无法确定拒绝会员资格的正确端点。我应该使用

PUT   /projects/api/v1/projects/{project id}/members/{member id}/reject
Run Code Online (Sandbox Code Playgroud)

或者

DELETE  /projects/api/v1/projects/{project id}/members/{member id}
Run Code Online (Sandbox Code Playgroud)

rest http http-put http-method http-delete

1
推荐指数
1
解决办法
2885
查看次数

HTTP RESTful Web服务注销:哪个是正确的或更好的做法 - POST还是DELETE?

正如在"RESTful"设置中使用HTTP方法登录和注销操作所接受的答案所述,建议在RESTful Web服务(例如/webservice/login/)中使用HTTP POST(= create)进行登录.POST既不是幂等的也不是安全的(http://restcookbook.com/HTTP%20Methods/idempotency/).

但是如何注销(例如/ webservice/logout /).我应该使用POST还是DELETE?

DELETE是幂等的 - 无论服务器上是否存在会话(或其他),它都会被删除,并且来自网络服务器的答案没有任何进一步的内容.这对我来说有点自然.

POST不是幂等的,类似问题的一些海报建议POST用于REST注销.我可以想到两个可能的原因:

  1. 如果会话不存在,服务器可能会返回404 - 否则成功答案(两种答案)

  2. 注销可以触发例如包含用户等的注销信息的数据库更新,因此注销操作不是幂等的

那么哪种HTTP方法更适合注销 - POST或DELETE?

rest http http-post http-delete

1
推荐指数
1
解决办法
3309
查看次数

DELETE动词在iis 10中不起作用

DELETE 方法在 IIS 10 中显示以下错误

请求的资源上不存在“Access-Control-Allow-Origin”标头。

所有其他方法(如 POST 和 GET)都可以正常工作。此外,DELETE 在开发时在 iis express 中运行良好。我为 WebApiConfig 类中的所有请求启用了 cors

public static void Register(HttpConfiguration config)
{
    config.SuppressDefaultHostAuthentication();
    config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

    // Web API routes
    config.MapHttpAttributeRoutes();
    var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
Run Code Online (Sandbox Code Playgroud)

我的网络配置看起来像这样

<?xml version="1.0" encoding="utf-8"?> <!--   For more information on how to configure your ASP.NET application, please visit   http://go.microsoft.com/fwlink/?LinkId=301879   --> <configuration>   <configSections>
    <!-- For more information on Entity Framework …
Run Code Online (Sandbox Code Playgroud)

iis cors http-delete asp.net-web-api iis-10

1
推荐指数
1
解决办法
2428
查看次数

php服务器方法发送GET而不是DELETE

我正在尝试实现基本用户注册RESTful api.我有一个html表单registerform.html,deregisterform.html,users.php,register.php和deregister.php,它们都粘贴在下面.

当我在浏览器中访问registerform.html时,我可以填写详细信息,users.php脚本会收到一个POST请求,并回显一个json响应,显示刚刚添加的用户的id号.我的问题是,当我使用deregister表单时,users.php脚本应该重新发送DELETE请求,但实际上是获取GET请求.我一直在寻找这个问题的答案,但我找不到解决方案.

registerform.html

<form action="users.php" method="POST">
    Username: <input type="text" name="uname" /><br />
    FirstName: <input type="text" name="fname" /><br />
    Last Name: <input type="text" name="lname" /><br />
    Date of Birth: <input type="date" name="dob" /><br />
    Telephone: <input type="mob" name="tel" /><br />
    Email: <input type="email" name="email1" /><br />
    Confirm Email: <input type="email" name="email2" /><br />
    Password: <input type="password" name="pass1" /><br />
    Confirm Password: <input type="password" name ="pass2" /><br />
    <input type="submit" value="Register" name="sub" />
    
    <br/><A HREF="login.php">Already Registered? Login Here</A><br/>
</form>  
Run Code Online (Sandbox Code Playgroud)

deregisterform.html

html php rest http http-delete

0
推荐指数
1
解决办法
140
查看次数

传递复杂对象到 REST 服务的删除方法

我有管理资源的 REST 服务EASYPAY..此时此服务公开了 3 种不同的方法:

  1. 获取 EasyPay 请求 ( GET);
  2. 插入一个 Easypay 请求 ( POST);
  3. 更新 Easypay 请求 ( PUT)。

当我插入或更新请求时,我还必须trace在数据库的表中插入一行。

现在我必须删除一个 Easypay 请求,我还必须在跟踪表上添加一行。我想使用DELETEHTTP 动词,但我看到使用 delete 我不能传递复杂的对象,而只能传递要删除的请求的 ID。我不能使用PUTHTTP 动词,因为我已经使用过它,无论如何它在概念上都不正确......我不想做更多的从客户端到服务器的调用(一个用于删除请求,另一个用于删除请求)在跟踪表中添加一行)..所以我不知道如何解决问题。

编辑

我试着解释得更好......我有一个部署在两个不同服务器上的网站。一种用于前端,一种用于后端。后端只为前端公开一些 REST 服务,它无法访问互联网(只能访问内部网)。访问该网站的客户可以通过名为 XPAY 的系统进行付款,它的工作方式与 paypal 非常相似(XPAY 只是另一个虚拟 POS)。因此,当客户尝试付款时,我会在数据库中保存一些信息 + 跟踪付款尝试,然后将他重定向到 XPAY。在那里,他可以付款。最后,XPAY 返回网站(前端)向我们传达付款结果。结果在支付的 URL 中,所以我必须把 URL 中的所有信息都发送到后端。根据结果​​,

你有什么建议?

谢谢

rest http-put complextype http-delete

0
推荐指数
1
解决办法
3112
查看次数

如何使用Javascript(而不是jQuery)发出DELETE http请求

我正试图弄清楚如何使用Javascript来发出DELETE请求.我有一个用Java Spring编写的服务,其中我正在处理的url的控制器method = RequestMethod.DELETE.我的网址是,比如说http://192.168.50.51/my-service/deleteLocation/{value1}/{value2}/{value3}.在我的JavaScript中,我有一个像这样的AJAX函数:

    ajaxFunction : function(url, callback, httpMethod) {

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            var jsonParse = JSON.parse(xhttp.responseText);
            callback(jsonParse);
        }
    }
    xhttp.open(httpMethod, url, true);
    xhttp.send();

}
Run Code Online (Sandbox Code Playgroud)

当我想使用DELETEurl时,我有一个事件处理程序附加到运行此方法的按钮:

    deleteConfirm : function() {
    var valuel         = this.value1;
    var value2         = document.getElementById('element-id').getAttribute('data-element');
    var value3         = document.getElementById('element-id').getAttribute('data-element2');
    var url            = 'http://192.168.50.51/my-service/deleteInfo/' + value1 + '/' + value2 + '/' + value3;
    var httpMethod     = …
Run Code Online (Sandbox Code Playgroud)

javascript ajax httprequest http-delete

0
推荐指数
1
解决办法
4708
查看次数

如何在javascript中传递一个id数组作为删除请求的参数

我有一个id的数组,我想附加到删除请求.我该如何将params附加到url请求?

var deleteArray = ['1','5','6'];

如果我想以这种格式发送请求http:// localhost/xxx/employees?ids = 1&ids = 5&ids = 6 for delete

如何解析数组内容以构建用于删除的请求URL 的ids = 1&ids = 5&ids = 6

我关注的是"&",我怎么能追加"&并在javascript中为url请求构建字符串

javascript rest http-delete

0
推荐指数
1
解决办法
1224
查看次数

模型序列化器销毁方法

我有一个名为的模型Profile,它是 Django 模型的包装器UserProfileSerializer现在,我通过以下方式创建了一个:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'password')

class ProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer(required=True)

    def create(self, validated_data):
        user_data = validated_data.pop('user')
        user = User.objects.create_user(**user_data, username=validated_data.get('username'))
        profile = Profile.objects.create(user=user, **validated_data)
        return profile
    
    def update(self, instance, validated_data):
        instance.dob = validated_data.get('dob', instance.dob)
        instance.karma = validated_data.get('karma', instance.karma)
        instance.username = validated_data.get('username', instance.username)
        user_data = validated_data.pop('user')
        instance.user.first_name = user_data.get('first_name', instance.user.first_name)
        instance.user.last_name = user_data.get('last_name', instance.user.last_name)
        instance.user.email = user_data.get('email', instance.user.email)
        instance.user.username = instance.username
        new_password = user_data.get('password') …
Run Code Online (Sandbox Code Playgroud)

django serialization http-delete

0
推荐指数
1
解决办法
3567
查看次数

删除方法 rails 6

我制作了一个 Web 应用程序,允许用户添加编辑和删除文章。我遇到的问题是删除方法不起作用。当我点击想要删除的文章旁边的“删除”时,什么也没有发生,我也没有收到任何错误。我认为它充当 GET 方法而不是 DELETE 方法,但我不知道为什么它不起作用。

任何帮助将不胜感激!

文章_controller.rb

def destroy
  @article = Article.find(params[:id])
  @article.destroy
  redirect_to articles_path
end
Run Code Online (Sandbox Code Playgroud)

index.html.erb

<tbody>
  <% @articles.each do |article| %>
  <tr>
    <td><%= article.title %></td>
        <td><%= article.description %></td>

        <td><%= link_to 'Show', article_path(article) %></td>
        <td><%= link_to 'Edit', edit_article_path(article) %></td>
        <td><%= link_to 'Delete', articles_path(article), method: :delete, data: {confirm: "Are you sure?"} %></td>

  </tr>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

单击删除时的控制台:

Started GET "/articles.5" for ::1 at 2020-03-26 16:45:32 +0000
Processing by ArticlesController#index as
  Rendering articles/index.html.erb within layouts/application
  Article Load (0.4ms)  SELECT …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails http-delete

0
推荐指数
1
解决办法
1463
查看次数

使用XMLHttpRequest发送PUT/DELETE数据

我使用来自使用XMLHttpRequest发送POST数据的示例来创建此JavaScript代码:

function PostXML(webURL, post_data) {
    var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
    objHTTP.open("POST", webURL, false);
    objHTTP.setRequestHeader("Content-Type", "application/xml; charset=utf-8");
    objHTTP.setRequestHeader("Accept", "application/xml; charset=utf-8");
    objHTTP.setRequestHeader("Content-Length", post_data.length);
    objHTTP.send(post_data);

    while((objHTTP.readyState != 4) && (objHTTP.readyState != 'complete')) {
        Delay(100);
    }

    if(200 != objHTTP.Status) {
        Log.Message("Returned Status Code of: " + objHTTP.Status);
        Log.Message("Status Text: " + objHTTP.StatusText);
    }
    else {
        Log.Message("Returned Status Code of: " + objHTTP.Status);
    }

    return objHTTP.responseText;
}
Run Code Online (Sandbox Code Playgroud)

我也需要PUTDELETE东西.如何传输此代码才能使用PUT,以及如何传输此代码以便能够执行此操作DELETE

任何其他同样有效的例子也很好.

javascript xml httprequest http-put http-delete

-3
推荐指数
1
解决办法
4万
查看次数