域名系统DNS以及跨域问题
mail.cctv.com (从左到右依次是三级域名.二级域名.顶级域名)
$('#search_input').on('keyup',function(event){
var searText=$('#search_input').val();
$.ajax({
type:'get',
async:true,
dataType:'jsonp',
jsonp:'cb',
url:'http://api.bing.com/qsonhs.aspx?type=cb&q='+searchText,
success:function(data){
var data=data.AS.Results[].Suggests;
var html='';
for(var i=;i<data.length;i++){
html+='<li>'+data[i].Txt+'</li>';
}
$('#search-result').html(html);
$('#search-suggest').show().css({
top:$('#search-form').offset().top+$('#search-form').height()+;
})
}
})
})
res.setHeader('Access-Control-Allow-Methods','PUT')//access-control-allow-methods:预检请求的应答中明确了客户端所要访问的资源允许使用的方法或方法列表
res.setHeader('Access-Control-Max-Age',)//响应的首部表示预检请求的返回结果可以被缓存多久
//响应首部Access-Control-Allow-Headers:预检请求,列出了将会在正式请求中access-control-headers字段中出现的首部信息 if(req.method==='OPTIONS'){
req.end()
}
app.put('/getData',function(req,res){
console.log(req.headers);
res.end('hello');
})
let xhr=new XMLHttpRequest()
document.cookie='name=hello'//cookie不能跨域
xhr.withCredentials=true;
//一个boolean类型,指示了是否该使用类似cookies,authorization headers或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制请求。在同一个站点下使用withCredentials属性是无效的
xhr.open('PUT','http://localhost:4000/heoo',true)
xhr.setRequestHeader('name','yuanq')
xhr.onreadystatechange=function(){
if(xhr.readyState===4){
if((xhr.status>=200&&xhr.status<300)||xhr.status===304)
{
console.log(xhr.response);
console.log(xhr.getResponseHeader('name'));
}
}
}
xhr.send()
//server1.js
let express=require('express');
let app=express();
app.use(express.static(_dirname));
app.listen(3000)
let express=require('express');
let app=express();
let whitList=['http://localhost:3000']
//设置白名单
app.use(function(req,res,next){
let origin=req.headers.origin
if(whiteList.includes(origin)){
//设置可以访问的源
res.setHeader('Access-Control-Origin',origin)
//允许携带哪个头访问我
res.setHeader('Access-Control-Headers','name')
//允许哪个方法可以访问我
res.setHeader('Access-Control-Allow-Methods','PUT')
//允许哪个携带cookie
res.setHeader('Access-Control-Allow-Credentials',true)
//预检的存活时间
res.setHeader('Access-Control-Max-Age',6)
//允许返回头
res.setHeader('Access-Control-Expose-Headers','name')
if(req.method==='OPTIONS'){
res.end()
}
}
next()
})
app.put('/getData',function(req,res){
console.log(req.headers);
res.setHeader('name','jeo')
res.end('hello')
})
app.get('/getData',function(req,res){
console.log(req.headers);
res.end('hello')
})
app.use(express.static(_dirname))
app.listen(5000)
<script>
let socket=new WebSocket('ws://localhost:233');
socket.onopen=function(){
socket.send('hl')
}
socket.onmessage=function(e){
console.log(e.data); } </script>
//服务器端
let express=require('express');
let app=express();
let WebSocket= require('nodejs-websocket')
let wss=new WebSocket.Server({port:})
wss.on('connection',function(ws){
ws.on('message',function(data){
console.log(data);
ws.send('hell')
})
})
域名系统DNS以及跨域问题的更多相关文章
- MassDNS:跨域DNS枚举工具
MassDNS:跨域DNS枚举工具 simeon 原文地址:http://offsecbyautomation.com/Use-MassDNS/ 工具地址:https://github.com/ble ...
- 跨域之URL
在介绍怎么跨域之前,先来弄清楚一个概念:URL.以下内容摘自维基百科. 统一资源定位符(或称统一资源定位器/定位地址.URL地址等,英语:Uniform / Universal Resource Lo ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- 跨域的jsonP
1.出现原因:因为web中的同源策略(域名,协议,端口号)限制了跨域访问. 2.区别于json (个人理解)json是数据交换格式,jsonp是数据通信中的交互方式 3.jsonp的get与p ...
- JavaScript权威设计--跨域,XMLHttpRequest(简要学习笔记十九)
1.跨域指的是什么? URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a. ...
- JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- 关于域名系统DNS解析IP地址的一些总结
关于域名系统DNS(Domain Name System) 从域名中解析出IP地址. DNS主要由3部分组成: ① 名称解析器(resolver) ② 域名空间(domain name space) ...
- Ajax跨域:Jsonp原理解析
推荐先看下这篇文章:JS跨域(ajax跨域.iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重 ...
- JSONP跨域的原理解析( 一种脚本注入行为)
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制, 被称为“some-Origin Policy”(同源策略).这一策略对于Jav ...
随机推荐
- 删除DataTable的指定行(Lambda)
DataTable dtTcu = GetAllTcuInfoBySdId(sdId); DataTable dtToesm = GetAllToesmBySdId(sdId); foreach (D ...
- [转][SerialPort]测试用例
private void Form1_Load(object sender, EventArgs e) { var s = SerialPort.GetPortNames().OrderBy(r =& ...
- Java程序国际化学习代码一
Java程序国际化初识 1.基本思路 Java程序的国际化的思路是将程序中的标签.提示等信息放在资源文件中,程序需要支持哪些国家.语言环境,就对应提供相应的资源文件.资源文件是key-value对,每 ...
- keil_v5生成.bin文件方法
按ALT+F7,打开如下对话框 如上图,选择 After Build/ Rebuild下的Run#1,输入: C:/keil_v5/ARM/ARMCC/bin/fromelf.exe -bin -o ...
- Git操作相关记录
1. 本地更新fork来的项目,与原项目同步更新 git remote add upstream <origin_repo_addr> git remote -v git fetch up ...
- Jmeter发送邮件功能SMTP Sampler
介绍Jmeter的发送邮件功能,使用的Sampler是SMTP Sampler,详细说明每个配置项的功能 从上往下介绍需要用到的配置项: Server settings Server: 服务器地址 P ...
- 接口与继承:方法覆盖(super)
源代码 //父类Parent class Parent{ int x; int y; Parent() { x = ; y = ; } public void Set(int a,int b) { x ...
- python-web自动化-Js-日历操作
日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能:以12306网站为例,讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉readonly属 ...
- Android 开发 values目录里定义数组、颜色、文本、尺寸xml配置文件并且获取数据 附录Android符号转码表
以下xml都在res/values/文件夹下创建 创建String类型array: /app/src/main/res/values/array.xml <?xml version=" ...
- html--form表单
<!-- form 标签 作用:收集并提交用户的信息 属性: id 表单的id,用于js获取表单 name 表单的名字,用于js获取表单 action 表单提交的地址 method 表单提交 ...