Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当从PhantomJS中发送时,HTTP内容类型标头和正文不会被传输_Http_Phantomjs_Content Type_Http Delete - Fatal编程技术网

当从PhantomJS中发送时,HTTP内容类型标头和正文不会被传输

当从PhantomJS中发送时,HTTP内容类型标头和正文不会被传输,http,phantomjs,content-type,http-delete,Http,Phantomjs,Content Type,Http Delete,当启动内容类型为header和body的HTTP DELETE请求时,这两个元素是: 当从Chrome内部发起请求时,收到良好效果, 从PhantomJS中启动请求时未收到。 两人中哪一人的行为符合标准 需要注意的是,在这两种情况下,客户机和服务器是相同的 下面是服务器级别的请求日志 从PhantomJS中发送的请求日志 从Chrome内部发送的请求日志 在第9.7章中规定了删除方法。它没有在描述文本中指定与POST和PUT相关的封闭实体消息体的任何内容 从您的日志中可以明显看出,Phantom

当启动内容类型为header和body的HTTP DELETE请求时,这两个元素是:

当从Chrome内部发起请求时,收到良好效果, 从PhantomJS中启动请求时未收到。 两人中哪一人的行为符合标准

需要注意的是,在这两种情况下,客户机和服务器是相同的

下面是服务器级别的请求日志

从PhantomJS中发送的请求日志

从Chrome内部发送的请求日志

在第9.7章中规定了删除方法。它没有在描述文本中指定与POST和PUT相关的封闭实体消息体的任何内容

从您的日志中可以明显看出,PhantomJS甚至不发送消息体,因此不需要包含内容类型,因为它假定不会使用它,因为它没有定义。看起来Chrome发送消息的主体是不顾一切的

第6.7章中包含以下内容:

删除请求上的主体没有定义的语义。注意 在删除请求上发送正文可能会导致某些现有的错误 实现拒绝请求

由于PhantomJS 1.x基于三年多以前的WebKit初稿版本,所以它的行为是这样的。另一方面,Chrome可能已经实施了提议的草案,并主动向机构发送删除请求。有关更多信息,请参阅


如果您的操作依赖于DELETE方法的消息体,那么您应该更改实现,以便您删除的资源完全由URI定义。

我的答案有帮助吗?有什么问题吗?有。我设计了一个RESTAPI,客户端可以在其中发送一个主体以及GET和DELETE请求。我认为在服务器中发送JSON比在URL中发送所有请求数据要干净得多。根据您的回复,我决定暂时审查API的设计,并将所有请求数据放在URL中以获取和删除。我认为修复phantomjs中的此错误比期望每个人都更改API更有意义…@shi phantomjs是开源的。您可以在GitHub上分叉它,修复代码并创建一个pull请求。
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /test/del
SERVER: req.method   OPTIONS
SERVER: req.headers  { 'access-control-request-method': 'DELETE',
  origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34',
  referer: 'http://localhost:9876/context.html',
  'access-control-request-headers': 'Content-Type, Accept',
  accept: '*/*',
  connection: 'Keep-Alive',
  'accept-encoding': 'gzip',
  'accept-language': 'fr-FR,en,*',
  host: 'localhost:9009' }
SERVER: req.query    {}
SERVER: req.body     {}
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E S P O N S E                                     -
SERVER: -------------------------------------------------------
SERVER: res.headers  { 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
  'Access-Control-Allow-Methods': 'PUT, DELETE',
  'Access-Control-Allow-Origin': '*' }
SERVER: -------------------------------------------------------
127.0.0.1 - - [Thu, 13 Nov 2014 16:07:08 GMT] "OPTIONS /test/del HTTP/1.1" 200 - "http://localhost:9876/context.html" "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34"
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /test/del
SERVER: req.method   DELETE
SERVER: req.headers  { origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34',
  accept: 'application/json, application/json;q=0.8, text/plain;q=0.5, */*;q=0.2',
  referer: 'http://localhost:9876/context.html',
  connection: 'Keep-Alive',
  'accept-encoding': 'gzip',
  'accept-language': 'fr-FR,en,*',
  host: 'localhost:9009' }
SERVER: req.query    {}
SERVER: req.body     {}
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /del
SERVER: req.method   DELETE
SERVER: req.headers  { origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34',
  accept: 'application/json, application/json;q=0.8, text/plain;q=0.5, */*;q=0.2',
  referer: 'http://localhost:9876/context.html',
  connection: 'Keep-Alive',
  'accept-encoding': 'gzip',
  'accept-language': 'fr-FR,en,*',
  host: 'localhost:9009' }
SERVER: req.query    {}
SERVER: req.body     {}
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E S P O N S E                                     -
SERVER: -------------------------------------------------------
SERVER: res.headers  { 'Content-type': 'application/json',
  'Access-Control-Allow-Origin': '*' }
SERVER: res.body     { code: 'Declined',
  reason: 'UNEXPECTED CONTENT',
  message: 'The content-type "undefined" is unexpected. Please use "application/json".' }
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /test/del
SERVER: req.method   OPTIONS
SERVER: req.headers  { host: 'localhost:9009',
  connection: 'keep-alive',
  'access-control-request-method': 'DELETE',
  origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36',
  'access-control-request-headers': 'accept, content-type',
  accept: '*/*',
  referer: 'http://localhost:9876/context.html',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8' }
SERVER: req.query    {}
SERVER: req.body     {}
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E S P O N S E                                     -
SERVER: -------------------------------------------------------
SERVER: res.headers  { 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
  'Access-Control-Allow-Methods': 'PUT, DELETE',
  'Access-Control-Allow-Origin': '*' }
SERVER: -------------------------------------------------------
127.0.0.1 - - [Thu, 13 Nov 2014 16:15:04 GMT] "OPTIONS /test/del HTTP/1.1" 200 - "http://localhost:9876/context.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /test/del
SERVER: req.method   DELETE
SERVER: req.headers  { host: 'localhost:9009',
  connection: 'keep-alive',
  'content-length': '23',
  accept: 'application/json, application/json;q=0.8, text/plain;q=0.5, */*;q=0.2',
  origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36',
  'content-type': 'application/json',
  referer: 'http://localhost:9876/context.html',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8' }
SERVER: req.query    {}
SERVER: req.body     { field1: 1, field2: 2 }
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E Q U E S T                                       -
SERVER: -------------------------------------------------------
SERVER: req.url      /del
SERVER: req.method   DELETE
SERVER: req.headers  { host: 'localhost:9009',
  connection: 'keep-alive',
  'content-length': '23',
  accept: 'application/json, application/json;q=0.8, text/plain;q=0.5, */*;q=0.2',
  origin: 'http://localhost:9876',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36',
  'content-type': 'application/json',
  referer: 'http://localhost:9876/context.html',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8' }
SERVER: req.query    {}
SERVER: req.body     { field1: 1, field2: 2 }
SERVER: -------------------------------------------------------
SERVER: -------------------------------------------------------
SERVER: - R E S P O N S E                                     -
SERVER: -------------------------------------------------------
SERVER: res.headers  { 'Content-type': 'application/json',
  'Access-Control-Allow-Origin': '*' }
SERVER: res.body     { code: 'Accepted' }
SERVER: -------------------------------------------------------