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 ...
随机推荐
- CI reids 缓存
注意:在项目中的application/libraries 中自己定义的类最好不要以cache命名. 连接 Redis 服务器的配置信息必须保存到 application/config/redis.p ...
- listView divider marginLeft marginRight
要实现这样的效果: 新建drawable 用inset 进行实现.代码如下: <?xml version="1.0" encoding="utf-8"? ...
- HTML5 progress元素的样式控制、兼容与实例
一.progress元素基本了解 基本UIprogress元素属于HTML5家族,指进度条.IE10+以及其他靠谱浏览器都支持.如下简单code: <progress>o(︶︿︶)o< ...
- IC开短路测试(open_short_test),编程器测试接触不良、开短路
http://kitebee.meibu.com/forum.php?mod=viewthread&tid=69654&extra=page%3D5 IC开短路测试(open_shor ...
- wpa_supplicant 连接成功后,如何配置wlan0与br0 协调上网
wlan0 地址,路由配置完成后,加入两条iptables 规则. #iptables -A FORWARD -i wlan0 -o br0 -s -m state --state NEW -j AC ...
- 【转】myeclipse的破解方法
获得myeclipse的长期使用权限 以下主要内容来自:http://www.sxrczx.com/t/article/8ad0ed7521434d278d401bdeea5fd820.htm 1.下 ...
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...
- Educational Codeforces Round 4 A. The Text Splitting 水题
A. The Text Splitting 题目连接: http://www.codeforces.com/contest/612/problem/A Description You are give ...
- busybox配置telnetd
busybox配置telnetd的问题 进入busybox源码文件夹,选择telnet,telnetd.后确保在ramdisk的sbin文件夹下存在inetd和in.telnetd或telned.在r ...
- #import与@class的区别
转自:http://www.cnblogs.com/jqyp/archive/2012/01/13/2321707.html 1.import会包含这个类的所有信息,包括实体变量和方法,而@class ...