304 CORS
304响应, CORS问题: 没有 Access-Control-Allow-Origin 这个头信息时,以前次返回的200请求为准。
示例:可能已被删除
http://7af3zm.com1.z0.glb.clouddn.com/ajax_304_cors.html
附上源码:
html
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script type="text/javascript">
// var _ajax_34re = false;
function getAjax () {
var _ajax_34re = false;
if (_ajax_34re) {
return _ajax_34re;
}
try {
_ajax_34re = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
_ajax_34re = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
_ajax_34re = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
_ajax_34re = false;
}
}
}
return _ajax_34re;
}
function load(url) {
request = getAjax ();
request.open("GET", url);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4)
if (request.status == 200)
alert("Server is done!" + request.responseText);
else if (request.status == 404)
alert("Request URL does not exist");
else
alert("Error: status code is " + request.status);
}
</script>
<pre>
access: 200、304响应都有 Access-Control-Allow-Origin:*;
access-non: 200、304响应都 没 有 Access-Control-Allow-Origin;
access-200: 200响应都有 Access-Control-Allow-Origin:*, 304响应 没 有 Access-Control-Allow-Origin;
</pre>
<input type="button" onclick='load("http://73a8eb41cb.a.passageway.io/access")' value="access" />
<input type="button" onclick='load("http://73a8eb41cb.a.passageway.io/access-non")' value="access-non" />
<input type="button" onclick='load("http://73a8eb41cb.a.passageway.io/access-200")' value="access-200" />
</body>
</html>
clojure
(ns base-web.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
[clojure.pprint :as log]))
(def my-route
(-> site-defaults
(assoc-in [:security :anti-forgery] false)
(assoc-in [:params] false)
))
(defn print-req [req]
(println )
(log/pprint my-route)
(log/pprint req)
(log/pprint (slurp (:body req)))
(println "done"))
(defn access-200 [req]
(let [etag "e-access-200"]
(if (not= etag (get-in req [:headers "if-none-match"]))
(do (println "200")
{:status 200,
:headers {"Content-Type" "application/json", "Access-Control-Allow-Origin" "*", "ETag" etag}
:body "{\"success\":true, \"frame\": \"ring\"}"})
(do (println "304")
{:status 304,
:headers {"Content-Type" "application/json", "ETag" etag}}))))
(defn access-non [req]
(let [etag "e-access-non"]
(if (not= etag (get-in req [:headers "if-none-match"]))
(do (println "200")
{:status 200,
:headers {"Content-Type" "application/json", "ETag" etag}
:body "{\"success\":true, \"frame\": \"ring\"}"})
(do (println "304")
{:status 304,
:headers {"Content-Type" "application/json", "ETag" etag}}))))
(defn access [req]
(let [etag "e-access"]
(if (not= etag (get-in req [:headers "if-none-match"]))
(do (println "200")
{:status 200,
:headers {"Content-Type" "application/json", "Access-Control-Allow-Origin" "*", "ETag" etag}
:body "{\"success\":true, \"frame\": \"ring\"}"})
(do (println "304")
{:status 304,
:headers {"Content-Type" "application/json", "ETag" etag}}))))
(defroutes app-routes
(GET "/access-200" req (access-200 req) )
(GET "/access-non" req (access-non req) )
(GET "/access" req (access req) )
(ANY "*" req
(print-req req)
"{\"success\":true, \"frame\": \"compojure\"}")
(route/not-found "Not Found"))
(def app
(wrap-defaults app-routes my-route))
;; lein ring server [<port>]
304 CORS的更多相关文章
- 读javascript高级程序设计15-Ajax,CORS,JSONP,Img Ping
平时用惯了jQuery.ajax之类的方法,却时常忽略了它背后的实现,本文是学习了AJAX基础及几种跨域解决方案之后的一些收获. 一.AJAX——XMLHttpRequest 谈起Ajax我们都很熟悉 ...
- CORS跨域资源共享你该知道的事儿
"唠嗑之前,一些客套话" CORS跨域资源共享,这个话题大家一定不陌生了,吃久了大转转公众号的深度技术好文,也该吃点儿小米粥溜溜胃里的缝儿了,今天咱们就再好好屡屡CORS跨域资源共 ...
- Ajax 跨域 异步 CORS
HTTP access control (CORS) 核心在于使用定制(添加新的header)HTTP header让浏览器和服务器有更多的相互了解,从而决定一个请求或者响应成功还是失败 对于一个 ...
- AJAX学习笔记2:XHR实现跨域资源共享(CORS)以及和JSONP的对比----转载
1 前言: 首先对参考文章作者表示感谢,你们的经验总结给我们这些新手提供了太多资源.本文致力于解决AJAX的CORS问题,我在逻辑上进行了梳理:首先,系统的总结了CORS问题的起源-同源策略:其次,介 ...
- 前端跨域(一):CORS
上周做了一个移动端表单提交的页面,其中涉及到了跨域问题,想来也是惭愧,因为之前一直都没有遇到过这个问题,因此都没有深入探索过,只是知道有哪几种方式,这次终于借这个机会可以把遗留的知识点补一补了. 1. ...
- CORS跨域资源共享简述
什么是CORS? 默认情况下,为预防某些而已行为,浏览器的XHR对象只能访问来源于同一个域中的资源.但是我们在日常实际开发中,常常会遇到跨域请求的需求,因此就出现了一种跨域请求的方案:CORS(Cro ...
- 使用cors完成跨域请求处理
跨域的含义 同源策略以及其限制内容 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击.所谓同源是指"协议+域名+端口&quo ...
- CORS详解[译]
介绍 由于同源策略的缘故,以往我们跨域请求,会使用诸如JSON-P(不安全)或者代理(设置代理和维护繁琐)的方式.而跨源资源共享(Cross-Origin Resource Sharing)是一个W3 ...
- ASP.NET Web API 跨域访问(CORS)
一.客户端用JSONP请求数据 如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的: {"YourSignatu ...
随机推荐
- chrome 41 空格
chrome 41对半角空格的解析 当做一个汉字宽度来处理了. 导致很多网站出现异常. 目前能想到的方法是删掉用来规范格式的空格. 老版chrome chrome41 和讯网也有这种问题 有更好的处理 ...
- OpenCV中cvWaitKey()函数注意事项
注意:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中.比如在MFC环境下,这个函数不起作用.
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- 10分钟学会基于ASP.NET的 JQuery实例 (转)
本文介绍如何在ASP.NET(ASP.NET/AJAX)里使用基于JQuery的AJAX技术.(源代码下载见最后) 在使用JQuery前,请到www.jquery.com下载最新版本的js代码,然后再 ...
- Codeforces Beta Round #5 E. Bindian Signalizing 并查集
E. Bindian Signalizing Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...
- Ubuntu:Target filesystem doesn't have /sbin/init (Slax 解决)
计算机(Ubuntu)因为异常断电或是其它原因,再次启动时.非常不幸的出现: Killed mount: mounting /dev on /root/dev failed: No such file ...
- alue of type java.lang.String cannot be converted to JSONObject
/** * 4.0以下系统处理掉返回json的BOM头 * * @param jsonStr * @return */ public static String getJson(String json ...
- JAVA正则表达式语法大全
[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...
- 柯南君 :Oracle 分区技术 之 怎样支撑大数据操作?
前段时间.看了罗女士( 资深技术顾问 - Oracle 中国 顾问咨询部)关于<大批量数据处理技术的演讲>视频.感觉受益良多,结合多年的知识积累,柯南君给大家分享一下: 交流内容: 一.O ...
- Cocos2D-X2.2.3学习笔记9(处理重力感应事件,移植到Android加入两次返回退出游戏效果)
这节我们来学习Cocos2d-x的最后一节.怎样处理重力感应事件.移植到Android后加入再按一次返回键退出游戏等.我这里用的Android.IOS不会也没设备呃 效果图不好弄,由于是要移植到真机上 ...