# JavaScript

AJAX跨域POST问题(HTTP,HTTPS)

浏览器遵循同源策略(same-origin policy),它不允许当前站点的脚本与不同源的站点之间进行数据交互,只要协议、域名、端口有任何一个不同,都被视为不同源。但有时确实又必须在当前站点通过Ajax请求其他不同源的资源,这明显与同源策略相悖,于是就有了JavaScript跨域问题。

至于为什么要有同源策略,可以Google一下同源策略的详解,这里只记录如何解决Ajax跨域POst的问题,包括不同协议(HTTP, HTTPS)之间的Ajax请求。跨域问题的解决办法有很多,对于端口和协议的不同,只能通过后台来解决。

跨域资源共享(CORS)

CORS原理

CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了一种跨域访问的机制,当必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。

那些年,踩过的JavaScript之坑

你编,或者不编程,项目就在那里,还未完成。你调,或者不调试,BUG就在那里,早晚得改。你踩,或者不踩,坑都在那里,等下一个受害者。

变量作用域

未使用var关键字定义的变量都是全局变量

在JavaScript中定义变量时漏掉var并不会报错。

1
2
3
4
5
function foo() {
value = 100; // value前没有var关键字,则声明了全局变量value并赋了值
}
foo();
console.log(value); // 输出 100