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 ...
随机推荐
- thinkphp 3+ 观后详解 (4)
static public function run() { // 应用初始化标签 Hook::listen('app_init'); App::init(); // 应用开始标签 Hook::lis ...
- openflashchart + flex
Hello openflashchart+flex的demo: http://blog.webasp.com.au/2009/06/open-flash-chart-as-a-swc/ http:// ...
- 正则表达式_删除字符串中的任意空格(Regex)
直接用 -split,默认以空白分隔.-split $a 用正则表达式中的 \s,-replace -split中都可以直接使用正则表达式,select-string也可以 split 和 join ...
- 使用adns库解析域名
1. adns.adns-python库简介 adns库是一个可进行异步非阻塞解析域名的库,主要使用C语言编写,在linux平台下运行.使用adns库进行域名解析效率非常,著名的开源网络爬虫larbi ...
- .Net连接到SAP【转载】
刚开始接触SAP了,感觉很陌生,清一色的TCode,不过里面的功能确实强大,不得不佩服啊,之前我一直是搞WinForm和WebForm的,现在能够接触到SAP那我还是想多学习一下,看了一下ABAP的语 ...
- CodeForces 176B Word Cut dp
Word Cut 题目连接: http://codeforces.com/problemset/problem/176/C Description Let's consider one interes ...
- Codeforces Round #180 (Div. 2) B. Sail 贪心
B. Sail 题目连接: http://www.codeforces.com/contest/298/problem/B Description The polar bears are going ...
- BZOJ 1295: [SCOI2009]最长距离 spfa
1295: [SCOI2009]最长距离 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 Description windy有一块 ...
- 比较长的sql语句
SELECT o. * FROM hq_goods g LEFT JOIN hq_orders o ON o.goods_id = g.id WHERE o.user_id =73 AND o.sta ...
- 【JavaScript】JS跨域设置和取Cookie
cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.本文主要JS怎样 ...