Questions tagged «http»

超文本传输​​协议(HTTP)是一种应用程序级网络协议,用于在万维网上传输内容。

3
跨域表单过帐
我已经看过有关该主题的文章和帖子(包括SO),并且普遍的评论是,同源策略阻止跨域的POST形式。我见过有人建议将同源政策不适用于表单帖子的唯一位置是此处。 我想从一个更“官方”或正式的来源获得答案。例如,是否有人知道解决同源性如何影响表单POST的RFC? 澄清:我不是在问是否可以构造GET或POST并将其发送到任何域。我在问: 如果Chrome,IE或Firefox允许域“ Y”中的内容将POST发送到域“ X” 如果接收POST的服务器实际上将看到所有表单值。我之所以这样说,是因为大多数在线讨论记录的测试人员都说服务器收到了该帖子,但是表单值全部为空/已剥离。 哪个正式文档(即RFC)说明了预期的行为(无论浏览器当前已实现了什么)。 顺便说一句,如果同源源不影响表单POST,那么这使得为什么需要使用防伪令牌更加明显。我之所以说“有点”,是因为很难相信攻击者可以简单地发出HTTP GET来检索包含反伪造令牌的表单,然后进行包含相同令牌的非法POST。注释?


3
HTTP内容类型标头和JSON
为了避免未知,我一直试图避免使用大多数HTTP协议的属性。 但是,我对自己说,我今天将面对恐惧并开始有目的地使用标题。我一直在尝试将json数据发送到浏览器并立即使用。例如,如果我有一个处于就绪状态4的Ajax处理程序函数,如下所示: function ajaxHandler(response){ alert(response.text); } 并且我在PHP代码中设置了content-type标头: header('Content-Type: application/json'); echo json_encode(array('text' => 'omrele')); 当清楚地告诉浏览器传入数据为时,为什么不能直接从处理程序函数访问该属性application/json?
144 javascript  php  json  http 


3
如何阻止恶意代码欺骗“ Origin”标头来利用CORS?
据我了解,如果在foo.com页面上运行的客户端脚本想要从bar.com请求数据,则在请求中必须指定标头Origin: http://foo.com,而bar必须以响应Access-Control-Allow-Origin: http://foo.com。 有什么方法可以阻止roh.com网站上的恶意代码简单地欺骗标头Origin: http://foo.com从bar请求页面?
142 javascript  ajax  http  cors 

5
删除服务器端Cookie的正确方法
在我的身份验证过程中,我会在用户登录时创建一个唯一令牌,并将其放入用于身份验证的Cookie中。 所以我会从服务器发送这样的消息: Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/; 适用于所有浏览器。然后要删除一个cookie,我发送一个类似的cookie,其expires字段设置为1970年1月1日 Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/; expires=Thu, Jan 01 1970 00:00:00 UTC; 而且在Firefox上运行良好,但不会在IE或Safari上删除Cookie。 那么删除cookie的最佳方法是什么(最好不使用JavaScript)?过去设置过期方法似乎很庞大。还有为什么这在FF中有效而在IE或Safari中无效?
141 http  cookies 


6
重复的HTTP GET查询键的权威位置
我在查找有关HTTP GET查询字符串重复字段的行为的权威信息时遇到麻烦,例如 http://example.com/page?field=foo&field=bar 尤其是是否保留订单。大多数面向Web的语言都会生成一个包含与键“字段”相关联的foo和bar的数组,但是我想知道关于这一点是否存在权威性声明(例如,在RFC上)。RFC 3986有一个section 3.4. Query,它引用键=值对,但是没有任何关于如何解释顺序和重复字段等的说明。这是有道理的,因为它是后端相关的,不在RFC的范围内... 尽管存在事实上的标准,但出于好奇,我希望看到它的权威来源。
137 http  uri 



7
如何使HttpURLConnection使用代理?
如果我这样做 conn = new URL(urlString).openConnection(); System.out.println("Proxy? " + conn.usingProxy()); 它打印 Proxy? false 问题是,我在代理后面。JVM在Windows的哪里获取代理信息?我该如何设置?我所有其他应用似乎都对我的代理完全满意。
136 java  windows  http  proxy 


4
REST,HTTP DELETE和参数
向HTTP DELETE请求提供参数是否有非RESTful功能? 我的情况是,我正在建模“确定要删除吗?” 场景。在某些情况下,资源的状态表明所请求的删除可能无效。您可能自己想像一些需要确认删除的情况 我们采用的解决方案是将参数传递给delete请求,以指示可以继续进行删除(“?force_delete = true”) 例如 DELETE http://server/resource/id?force_delete=true 我认为自从以下原因以来,它仍然令人放松: (a)DELETE的语义未更改-用户仍然可以发送普通的DELETE请求,但此操作可能会失败并显示409,响应主体将说明原因。我说这可能会失败,因为(出于不值得解释的原因)在某些情况下没有理由提示用户。 (b)Roy的论文中没有任何东西表明它与REST的精神背道而驰-为什么会这样,因为HTTP只是REST的一种实现,所以为什么传递HTTP参数会很重要 有人可以指出明确的陈述,说明为什么它不是RESTful的吗? 关于一个相关的问题,如果用户未指定force_delete,那么我正在返回409 Conflict-这是最合适的响应代码吗? 跟进 经过进一步的研究,我认为向DELETE添加参数可能会违反一些原则。 首先是该实现可能违反“统一接口”(请参见Roy论文的 5.1.5节)。 通过添加“ force_delete”,我们在已经定义良好的DELETE方法上添加了一个附加约束。此约束仅对我们有意义。 您也可能会争辩说它违反了“ 5.1.2客户端-服务器”,因为确认对话框确实是UI问题,并非所有客户端都希望确认删除。 建议有人吗?
135 http  rest 

10
如何使用ASP.NET Core从查询字符串读取值?
我正在使用ASP.NET Core MVC构建一个RESTful API,并且我想使用querystring参数来指定对返回集合的资源的过滤和分页。 在那种情况下,我需要读取在querystring中传递的值以进行过滤并选择要返回的结果。 我已经发现在控制器Get动作内部访问HttpContext.Request.Query返回一个IQueryCollection。 问题是我不知道如何使用它来检索值。实际上,我认为该方法是通过使用例如 string page = HttpContext.Request.Query["page"] 问题是HttpContext.Request.Query["page"]它不会返回字符串,而是返回StringValues。 无论如何,如何使用IQueryCollection来实际读取查询字符串值?

12
休息集合中的分页
我有兴趣向JSON文档集合公开直接的REST接口(请考虑CouchDB或Persevere)。我遇到的问题是,GET如果集合很大,如何处理集合根目录上的操作。 举一个例子,我要展示StackOverflow的Questions表,其中每一行都以文档的形式显示(不一定有这样的表,只是“文档”的大量集合的具体示例)。收集将在可提供/db/questions与通常的CRUD API GET /db/questions/XXX,PUT /db/questions/XXX,POST /db/questions是在玩。获取整个集合的标准方法是,GET /db/questions但是,如果天真地将每一行都作为JSON对象转储,那么您将获得相当可观的下载量,并且在服务器方面需要进行大量工作。 解决方案当然是分页。Dojo通过在其JsonRestStore中使用Range与自定义范围单位一起使用标头的RFC2616兼容扩展,解决了此问题items。结果是206 Partial Content仅返回要求范围的。与查询参数相比,此方法的优势在于,它将查询字符串留给...查询(例如GET /db/questions/?score>200,诸如此类,是的,将被编码%3E)。 这种方法完全涵盖了我想要的行为。问题在于RFC 2616在206响应上指定了此内容(重点是我的): 该请求必须包含指示所需范围的Range标头字段(第14.35节),并且可能包含If-Range标头字段(第14.27节)以使请求成为条件请求。 这在标头的标准用法的上下文中是有道理的,但是这是一个问题,因为我希望206响应是默认值,以处理幼稚的客户/随机人员进行探索。 我已经详细研究了RFC,以寻找解决方案,但对我的解决方案不满意,并且对SO解决该问题很感兴趣。 我的想法: 200带Content-Range标题返回!-我不认为这是错误的,但是我希望有一个更明显的指示,即响应只是部分内容。 返回400 Range Required -所需的标头没有特殊的400响应代码,因此必须使用默认错误并手动读取。这也使得通过Web浏览器(或诸如Resty之类的其他客户端)进行探索变得更加困难。 使用查询参数 -一种标准方法,但是我希望允许进行la la Persevere查询,这切入了查询名称空间。 刚回来206!-我认为大多数客户不会害怕,但我不想违反RFC中的MUST 扩展规格!返回值266 Partial Content -行为与206完全相同,但响应于不得包含Range标头的请求。我认为266足够高,因此我不应该遇到碰撞问题,这对我来说很有意义,但是我不清楚这是否被视为禁忌。 我认为这是一个相当普遍的问题,我希望以某种事实上的方式完成此任务,因此我或其他人不会重新发明轮子。 当集合很大时,通过HTTP公开完整集合的最佳方法是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.