首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送带有C#错误403的文件和数据。使用CURL时没有错误

问发送带有C#错误403的文件和数据。使用CURL时没有错误
EN

Stack Overflow用户
提问于 2019-04-18 22:12:02
回答 1查看 533关注 0票数 1

我试图从我的C#程序上传一个文件和一些带有POST请求的数据到我的服务器,但是我收到了always error 403。

post参数是"id“=保存文件的文件夹"pos”=文件名

因此,如果用户上传文件"abc.text“和POST数据是”id=“pos="first”,则该文件将保存在/users/Mario/first.txt中

我尝试将params id和pos更改为GET,但总是出现错误403

C#响应

代码语言:javascript
复制
{StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, 
Content: System.Net.Http.StreamContent, 
Headers:{  Vary: Accept-Encoding  X-Varnish: 818481486  Age: 0  
X-Cache: MISS  Transfer-Encoding: chunked  Connection: keep-alive  
Date: Thu, 18 Apr 2019 14:29:10 GMT  Content-Type: text/html; 
charset=iso-8859-1}}

我的代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="uploader2.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="input" name="id"></input><br />
    <input type="input" name="pos"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<!-- language: lang-php -->
<?PHP
  if(!empty($_FILES['uploaded_file']))
  {
    $path = "users/".$_POST['id']."/";

    if(!is_dir($path))  
        {  
        if(!mkdir ($path,0777,true))
            echo 'Error creating folder!';  
        }  

    $path = $path.$_POST['pos'].".txt";

    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "Ok";
    } else{
        echo "Failed!";
    }
  }
?>

这是我的C#代码

代码语言:javascript
复制
using (var httpClient = new HttpClient())
{   
    MultipartFormDataContent multipartContent = new MultipartFormDataContent();
    var fp = File.ReadAllBytes("file.txt");

    multipartContent.Add(new StringContent("Mario"), "id");
    multipartContent.Add(new StringContent("first"), "pos");
    multipartContent.Add(new ByteArrayContent(fp, 0, fp.Length), "uploaded_file", "file.txt");
    HttpResponseMessage response = await httpClient.PostAsync("http://host.com/uploader2.php", multipartContent);

    response.EnsureSuccessStatusCode();
    httpClient.Dispose();
    string sd = response.Content.ReadAsStringAsync().Result;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-18 22:16:23

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

在您的php脚本中使用以下代码:

代码语言:javascript
复制
header("Access-Control-Allow-Origin: *"); // wildcard allows access to all domains

Access-Control-Allow-Origin是CORS (Cross-Origin Resource Sharing)报头。

当站点A尝试从站点B获取内容时,站点B可以发送Access-Control-Allow-Origin响应头,以告知浏览器此页面的内容可由某些源访问。(源是一个域名,外加一个方案和端口号。)默认情况下,任何其他来源都无法访问站点B的页面;使用Access-Control-Allow-Origin标头为特定请求来源的跨来源访问打开了一扇门。

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

https://stackoverflow.com/questions/55747876

复制
相关文章

相似问题

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