首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以卷表示的400坏请求

以卷表示的400坏请求
EN

Stack Overflow用户
提问于 2012-10-13 14:36:06
回答 1查看 3.8K关注 0票数 2

几天来,我一直试图将邮件发送到服务器。但我收到了一个错误请求,即:

代码语言:javascript
复制
HTTP/1.1 400 Bad Request
Server: cloudflare-nginx
Date: Sat, 13 Oct 2012 14:25:32 GMT
Content-Type: text/html
Content-Length: 522
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare-nginx</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a pad 

我的代码在这里(我使用了libcurl.net on c#)

代码语言:javascript
复制
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
Thread.Sleep(400);
try
{
    var curl = new Easy();

    Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);

    curl.SetOpt(CURLoption.CURLOPT_URL, webpage);
    curl.SetOpt(CURLoption.CURLOPT_HEADER, true);
    curl.SetOpt(CURLoption.CURLOPT_TIMEOUT, "100");
    curl.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, false);

    Slist sl = new Slist();

    sl.Append(String.Format("POST {0} HTTP/1.1\r\n\r\n", (new Uri(oyy.sayfa).PathAndQuery)));
    sl.Append(String.Format("Host: {0}", hostname ));
    sl.Append(String.Format("{0}", "Connection: keep-alive"));
    sl.Append(String.Format("Content-Length: {0}", param.Length));
    sl.Append(String.Format("Origin: {0}", originname));
    sl.Append(String.Format("{0}", "X-Requested-With: XMLHttpRequest"));
    sl.Append(String.Format("User-Agent: {0}",  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4")); 

    sl.Append(String.Format("{0}", "Content-Type: application/x-www-form-urlencoded"));
    sl.Append(String.Format("{0}", "Accept: */*"));
    sl.Append(String.Format("Referer: {0}",referans)); 
    sl.Append(String.Format("{0}", "Accept-Encoding: gzip,deflate,sdch"));
    sl.Append(String.Format("{0}", "Accept-Language: en-US,en;q=0.8"));
    sl.Append(String.Format("{0}", "Accept-Charset: utf-8;q=0.7,*;q=0.3*/"));
    sl.Append("\r\n\r\n");

    curl.SetOpt(CURLoption.CURLOPT_HTTPHEADER, sl); 

    curl.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile);
    curl.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile);
    curl.SetOpt(CURLoption.CURLOPT_COOKIE, "cokieee");
     curl.SetOpt(CURLoption.CURLOPT_PROXY, "http://127.0.0.1:9050");
    curl.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_SOCKS5);
    curl.SetOpt(CURLoption.CURLOPT_VERBOSE, false);
    curl.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);

    curl.Perform();
    curl.Cleanup();
    curl.GlobalCleanup(); 

    string result = sourceContent.ToString();

----------


public Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb, Object extraData)
{
  string aa = System.Text.Encoding.UTF8.GetString(buf);
  this.sourceContent.Append(aa + " ");
  return size * nmemb;
}

我认为这个问题是基于CURLOPT_HTTPHEADER的。我认为sl (SList)不是真的,或者我错过了添加一些内容。我上面所有的信息。

EN

回答 1

Stack Overflow用户

发布于 2013-11-11 14:37:22

根据libcurl.net文档,它说不要将CRLF添加到您传递给CURLOPT_HTTPHEADER的标头中,因为libcurl.net已经在请求中添加了CRLF。您可能在服务器上出现问题,无法正确地拾取一些标头值。另外,不要将请求行添加到包含POST或GET的标题中。有关这些文件的节选,见下文:

Slist中包含的标题不能以CRLF终止,因为curl在每个标题项之后添加CRLF。如果不遵守这一要求,就会产生奇怪的错误,因为服务器很可能会忽略您指定的部分标头。 请求中的第一行(通常包含GET或POST)不是标题,不能使用此选项替换。只有请求行后面的行是标题.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12874105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档