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 ...
随机推荐
- window8家庭版上的RationalRose
来点儿小插曲儿,本是继续Java系列文章的续集的,但是最近要用到UML,在网上看了看,查了查推荐的到是不少,最终还是选择了rose,哈哈,一半是冲着名字去的,一半看看了与其它的UML的比较,最终中意r ...
- CloudSTack4.2 查看所有虚拟机API测试
http://192.168.153.34:8080/ client/api? command=listVirtualMachines &response=json &sessionk ...
- IOS开发之路四(UITabBarController)
前两天看了看斯坦福大学的iphone开发公开课,讲的倒是不错,可看的我云里雾里的,不怎么讲基础和原理,不太适合初学者.今天看了一上午ios5基础教程这本书感觉有点头绪了....废话少说,讲一讲我上午做 ...
- Codeforces Round #188 (Div. 2) C. Perfect Pair 数学
B. Strings of Power Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/318/p ...
- 都是iconv惹的祸
今天在做采集的时候发现只取到了网页的部分内容,当时我就郁闷了,之前都用的采集都可以采集到网页的所有内容,但这次死活就取到部分内容.寻找原因才知道原来是iconv惹的祸. 发现问题时,网上搜了搜,才发现 ...
- JavaEE系列之(二)commons-fileupload实现文件上传、下载
一.文件上传概述 实现Web开发中的文件上传功能,需要两步操作: 1.在Web页面中添加上传输入项 <form action="#" method=" ...
- javascript 拷贝
拷贝简单分为浅拷贝与深度拷贝,即给定一个对象,生成一个相同的对象. 浅拷贝 function copy(source,destiny){ destiny = destiny || {}; if(typ ...
- 在Linux最大打开文件数限制下 MySQL 对参数的调整
http://www.actionsky.com/docs/archives/78 2016年4月7日 周文雅 目录 1 起因 2 说明 3 MySQL调整参数的方式 3.1 计算 request ...
- fs/ext2/inode.c相关函数注释
用数组chain[4]描述四种不同的索引,即直接索引.一级间接索引.二级间接索引.三级间接索引.举例说明这个结构各个域的含义.如果文件内的块号为8,则不需要间接索引,所以只用chain[0]一个Ind ...
- 什么是mysql中的元数据
一:什么是元数据? 所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据.描述数据库的任何数据—作为数据库内容的对立面—是元数据.因此,列名 ...