【问题标题】:Can't create a post request [duplicate]无法创建发布请求[重复]
【发布时间】:2019-01-24 18:17:55
【问题描述】:

我正在尝试向我的服务器发出发布请求,但我无法创建。 我必须创建的请求是 -

 POST /buy/new/product HTTP/1.1
 Host: foo.com
 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) 
 Gecko/20100101 Firefox/64.0
 Accept: application/json;api-version=3.2- 
 preview.1;excludeUrls=true;enumsAsNumbers=true
 ;msDateFormat=true;noArrayWrap=true
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: https://foo2.com/buy/
 content-type: application/json
 origin: https://foo.com
 Content-Length: 76
 Connection: close
 Cookie: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 {"buyId":"3232323-32-3-23-23232-3","force":false,"token":11111111111}

但是我从我的代码中提出的请求是 -

 OPTIONS /buy/new/product HTTP/1.1
 Host: foo.com
 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) 
 Gecko/20100101 Firefox/64.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate 
 Access-Control-Request-Method: POST
 Access-Control-Request-Headers: content-type
 Referer: http://foo.com/
 Origin: http://foo.com
 Connection: close

我用过的代码——

 <html>
 <body>
 <center>
 <h2>Buy Now</h2>

 <div id="demo">
 <button type="button" onclick="buy()">Buy Now</button>
 </div>

 <script>
 function buy() {
 var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function() {
 if (this.readyState == 4 && this.status == 200) {
 document.getElementById("demo").innerHTML = alert(this.responseText);
 }
 };
 xhttp.open("POST", "https://foo.com//buy/new/product", true);
 xhttp.withCredentials = true;
 xhttp.setRequestHeader("Content-Type","application/json;api-version=3.2- 
 preview.1");
 xhttp.send(JSON.stringify('{"buyId":"3232323-32-3-23-23232- 
 3","force":false,"token":11111111111}')); 
 }
 </script>

 </body>
 </html>

请帮我解决这个问题。当单击按钮购买它并查看开发人员工具时,我收到了选项请求。我也想发送数据 {"buyId":"3232323-32-3-23-23232-3","force":false,"token":11111111111} 但我无法将其发送到我的服务器。 谢谢

【问题讨论】:

  • 除非他们允许,否则您不能向其他服务器发出请求。上述脚本是否托管在“foo.com”上?还是你自己的服务器? OPTIONS 请求是一个飞行前请求,用于检查发送实际请求是否无论如何都会失败。
  • 另外,你为什么JSON.stringify一个字符串?

标签: javascript html post cors


【解决方案1】:

发生这种情况是因为浏览器作为安全措施会阻止来自两个不同 URL 的请求,例如 www.abc.com 到 www.xyz.com。您可以通过在请求的后端服务器上配置 CORS 来解决此问题,或者测试您可以在浏览器中使用 CORS 插件来解决此问题。例如,在 chrome 中,您可以使用下面的插件来禁用 CORS https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多