标签: http-post

POST 403 Forbidden for Chrome extension with Django 在后端

我之前从未开发过 Chrome 扩展程序,目前正在为我的 Django 驱动的应用程序开发 Chrome 扩展程序(具有链接提交功能)。当我尝试使用扩展提交链接时,出现以下错误:

'POST http://127.0.0.1:8000/add_link_from_extension 403 (FORBIDDEN)'
Run Code Online (Sandbox Code Playgroud)

这可以通过在 postdata JSON 中传递 csrfmiddlewaretoken 来解决,但是,显然我做不到

<script>var csrfmiddlewaretoken = "{{ csrf_token }}"</script>
Run Code Online (Sandbox Code Playgroud)

在 Chrome 扩展程序的 html 文件中。您如何将 csrf_token 从 Django 传递到 Chrome 扩展程序的 JavaScript?或者,有没有其他方法可以解决这个问题?这是来自 Chrome 扩展程序的 JS 代码的相关部分:

postdata = {
        "url":url.value
        //"csrfmiddlewaretoken": csrfmiddlewaretoken 
    };
$.post('http://' + "127.0.0.1:8000" + '/add_link_from_extension', postdata, success);
Run Code Online (Sandbox Code Playgroud)

api django http-post google-chrome-extension django-csrf

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

JAVA 发送包含 XML 字符串的 Post 请求

问题描述

我正在尝试编写一个向服务器发送 POST 请求的代码。由于服务器尚不存在,我无法测试这部分代码。对于请求,我必须将 XML 作为字符串发送,它看起来像下面的字符串:

String XMLSRequest = "<?xml version="1.0" encoding="UTF-8" standalone="no"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><AuthenticationHeader><Username>Victor</Username><Password>Apoyan</Password></AuthenticationHeader></soapenv:Body></soapenv:Envelope>"
Run Code Online (Sandbox Code Playgroud)

解决方案

String url = "https://testurl.com/somerequest";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

String urlParameters = String.format("request=%s", XMLSRequest);

// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
Run Code Online (Sandbox Code Playgroud)

这是将字符串(类似 XML 的字符串)作为 POST 请求发送到服务器的正确方法吗?

java xml post xmlhttprequest http-post

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

模型绑定器不适用于 JSON POST

我通过 POST 发送以下 JSON:

POST http://localhost:52873/news 

{"text":"testing","isPublic":true}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public class NewsController : Controller
{
    // GET: /<controller>/
    [HttpGet]
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public IActionResult Post(CreatePostCommand command)
    {
        /* ...more code... */
        return new HttpStatusCodeResult(200);
    }
}
Run Code Online (Sandbox Code Playgroud)

命令是:

public class CreatePostCommand
{
    public string Text { get; set; }
    public bool IsPublic { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的路由设置是 VS 2014 CTP 4 中 MVC 模板附带的默认设置:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default", 
        template: "{controller}/{action}/{id?}",
        defaults: new { controller …
Run Code Online (Sandbox Code Playgroud)

c# json http-post model-binding asp.net-core-mvc

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

VBA POST json 到 API

我正在尝试编写 VBA 将 json 发布到 api 并将结果解析到工作表中。我可以生成 JSON,并且有信心可以将结果解析为我需要的内容。

我知道有一些在线工具可以将 json 转换为 vba 并返回,还有将浏览器插件转换为发布请求的工具,但我是办公室中唯一可以执行此操作的工具,因此如果我生病或休假,我想将其自动化。为此,我需要发送 json 并可能存储响应,以便我可以解析它。

我是编码新手,所以发布这样的请求超出了我的头脑。到目前为止,我有以下代码来编写json。我将不胜感激任何帮助我开始。如果需要,我可以发布我想发布的 json 或 api 示例。

为糟糕的代码道歉我知道我可以改进它但想要得到 json 响应,因为我认为这将是最具挑战性的部分。

编辑已经取得了一些进展。现在可以向 URL 发送 JSON 字符串并获得响应。但是它总是返回失败:

"{ ""message"": ""发生错误。"" }"

如果我使用 httpRequestor 手动发送 json,结果将正确返回。这似乎表明代码中的某处 JSON 在发布时被混淆或以某种方式修改。

更新了下面的代码。(已删除对实际数据的任何引用)

编辑 2 已修复并正常工作。删除了引号

objHTTP.send ("Json")

    Private Sub CommandButton21_Click()

Dim h_1 As String
Dim h_2 As String

h_1 = Range("A1")
h_2 = Range("B1")
h_3 = Range("C1")
h_4 = Range("D1")
h_5 = Range("E1")
h_6 = Range("F1")

sv_1 = 2
sv_2 = 2
sv_3 …
Run Code Online (Sandbox Code Playgroud)

excel vba json http-post

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

POST 请求作为 Heroku 上的 GET 请求接收


为什么我的 PHP 脚本没有接收到由 Heroku 托管的另一个域上的 html 表单设置的 POST 参数?



语境:

我有一个简单的 html 表单,它将一些用户数据发送到我放在 Heroku 上的 PHP 脚本。该表单位于不同的站点/域上,但据我所知,同源策略不应中断请求。事实上,我已经测试过将请求从表单发送到我的本地机器,并且脚本运行良好。

请求从 html 表单正常正常触发,但是当它到达我的 PHP 脚本时,$_POST 数组是空的。检查 Heroku 日志后,实际上看起来我的脚本将 POST 请求作为 GET 接收。

是否有我没有做过的配置/路由事情(我是 Heroku 的新手)?

我查看了其他几个类似这样的问题/答案,但还没有解决方案对我有用。

非常感谢您的帮助



更新 1 (4/4/12)

正如 CoR 在他的回答中所描述的那样,POST 请求似乎正在被移动。我不知道如何阻止这种情况发生。通过研究,似乎只有当您不通过 h​​ttps 发出 POST 请求时才会发生这种移动。

现在我已经提交并将表单方法更改为 GET,这很好用。很高兴知道是否可以在不设置 SSL 的情况下在 Heroku 应用程序上启用 POST 请求。



更新 2 (6/4/12)

我刚刚用 Heroku 打开了一张票,以了解支持 POST 请求的唯一方法是否是启用 SSL。我当然在此处询问之前查看了他们的文档以寻求答案,但是没有描述与 CoR 回答时移动 POST 相关的任何内容。当他们回复我时,我会在此处发布 (...) 答案。

php post http heroku http-post

2
推荐指数
2
解决办法
3036
查看次数

正文中带有 json 的原始 POST 请求

在 Lua 程序中,使用 modeMCU,我的 HTTP POST 请求出现问题。

我针对httpbin.org/post.

我想发送json数据,所以我的要求是:

POST /post HTTP/1.1
Host: httpbin.org
Connection: close
Accept: */*
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)
Content-Type: application/json

{...some JSON here}
Run Code Online (Sandbox Code Playgroud)

回应是:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 07 Sep 2015 10:39:12 GMT
Content-Type: application/json
Content-Length: 332
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/4.0 (compatible; esp8266 Lua; Windows NT …
Run Code Online (Sandbox Code Playgroud)

lua json curl http http-post

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

apiclient.discovery.build POST 请求正文

我的服务器 Google App Engine API 代码和我的客户端都使用 python。我已经有很多客户端-服务器 GET 请求在工作,现在是 POST 请求的时候了,但我被卡住了。我的相关客户代码:

service = build("myAPI", "v1", http=http, discoveryServiceUrl=DISCOVERY_URL)
service.updateUser(websafeKey=websafeKey).execute()
Run Code Online (Sandbox Code Playgroud)

我不知道如何构建 POST 请求的正文。在那之后,我将被困在试图弄清楚如何告诉service它以便它可以将请求发送到我的 updateUser API。

POST 请求正文将需要包含一些字符串和几个列表,然后可能包含一个 python Date 对象。

我的updateUserAPI 在 API Explorer 中运行良好 - 我可以updateUser一整天都成功:

USER_POST_REQUEST = endpoints.ResourceContainer(
UserForm, websafeKey=messages.StringField(1),)
@endpoints.method(USER_POST_REQUEST, UserForm,
        path='useradmin/{websafeKey}',
        http_method='PUT', name='updateUser')
def updateUser(self, request):
    """Update user w/provided fields & return w/updated info."""
    return self._updateUserObject(request)
Run Code Online (Sandbox Code Playgroud)

python google-app-engine http-post google-api-client

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

PostAsJsonAsync 后 WebApi 方法中的对象为 null

我正在向 WebApi 方法发布一个对象。我是PostAsJsonAsync用来做这个的。

public async Task<HttpResponseMessage> PostAsync(string token, ServiceCall call)
{
    var client = new HttpClient();
    client.SetBearerToken(token);

    var response = await client.PostAsJsonAsync(Uri + "id/nestedcall", call);

    return response;
}
Run Code Online (Sandbox Code Playgroud)

call当我发布它时,我传递的对象不为空。

[HttpPost]
[Route("id/nestedcall")]
public async Task<IHttpActionResult> NestedCall([FromBody]ServiceCall call)
{
    // call is null here
}
Run Code Online (Sandbox Code Playgroud)

但是,它在我的 API 方法中为 null。我似乎无法弄清楚为什么我遵循的所有示例都使用这种格式。

为什么调用对象没有被 web api 拾取?

编辑

这里是ServiceCall对象。它位于一个单独的类库中,并且 Web 应用程序和 API 中都包含一个引用。

public class ServiceCall
{
    public ServiceCall(Service service, string grantType)
    {
        ClientId = service.Id;
        ClientSecret = service.Secret;
        Uri = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc http-post asp.net-web-api asp.net-web-api2

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

Http post 请求取消 NTLM 身份验证(java)

我尝试在 Java 中使用 NTLM 身份验证发送 HttpRest 调用。我尝试使用org.apache.http图书馆。使用 HttpClient 发送带有匿名身份验证的 Post 请求并不是什么大问题。但是我在使用 WindowsAuthentication 时遇到了一些麻烦。我什至尝试将 CredentialProvider 与我自己的 Windows 凭据一起使用(作为妥协,我也不喜欢那样)但我没有成功。

是否有使用 NTLM 身份验证从 Java 代码发送 post 请求的简单方法?

是否有另一个库更适合我的需求?

rest ntlm http http-post windows-authentication

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

从 HTTP POST 中检索响应正文

我正在向 API 发送 409 响应代码以及如下所示的响应正文:

    { 
       "message": "Exception thrown.",
       "errorDescription": "Object does not exist"
    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能拉出响应体并反序列化它?

我正在使用 HttpClient:

    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:60129");

    var model = new Inspection
    {
        CategoryId = 1,
        InspectionId = 0,
        Descriptor1 = "test descriptor 121212",
        Name = "my inspection 1121212"
    };

    var serializer = new JavaScriptSerializer();
    var json = serializer.Serialize(model);
    var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

    var result = client.PostAsync("api/Inspections/UpdateInspection", stringContent);

    var r = result.Result;
Run Code Online (Sandbox Code Playgroud)

我似乎是一件很常见的事情,但我正在努力寻找数据在我的结果中的位置。

c# http-post asp.net-web-api

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