博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net web api 跨域,带cookie
阅读量:5753 次
发布时间:2019-06-18

本文共 882 字,大约阅读时间需要 2 分钟。

官网上有一个介绍

但是只支持4.5,如果是4.0开发,需要自己手动了。

默认是不支持跨域的,如果你从一个域访问另一个域的api

虽然是200,但是什么东西都没有返回

在api的响应头上加入

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

则可以被跨域访问。

如果希望带cookie信息,则ajax请求时,需要

$.ajax({    type: "get",    url: "http://localhost:6836/api/values",    })

此时,请求头中会带cookie

如果服务器不做任何设置

又会出现200,但是没有收到值的情况

需要在响应头中加入

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");

但是还是会发生200,没有返回值

通过对比ms提供的和自己写的发现

我们自己写的指定的是*,而ms是具体的地址。把*改成具体的地址,则ok

地址可以通过

Request.Headers.GetValues("Origin")

获取请求头中的信息

 

以上方式,只适合夸子域的请求,如果是根域都跨了,他是不会在头中添加cookie的。

 

这个时候,我们可以使用一个自定义头来发送一些内容。

在发送带有自定义头的请求时,会先以一个Options method发起请求,查看是否允许子定义的头

这个时候,服务端首先要允许options method,然后

Headers.Add("Access-Control-Allow-Headers","*");
同样注意把*替换成你的自定义头
可以添加Access-Control-Allow-Methods头来设置允许的method
 
最后再jquery中
$.ajax({
 
 
 
})

转载于:https://www.cnblogs.com/czcz1024/p/3673136.html

你可能感兴趣的文章
iPhone开发面试题--葵花宝典
查看>>
EdbMails Convert EDB to PST
查看>>
POJ 2184
查看>>
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>
判断是否含有中文
查看>>
android 资源种类及使用
查看>>
Explorer程序出错
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
mysql数据类型---数值型---int
查看>>
为eclipse安装maven插件
查看>>
公司新年第一次全员大会小记
查看>>
最懒的程序员
查看>>
JAVA8 Stream 浅析
查看>>
inner join on, left join on, right join on要详细点的介绍
查看>>