首页 > 其他分享 >ajax跨域访问的问题解决

ajax跨域访问的问题解决

时间:2023-01-26 11:31:09浏览次数:54  
标签:origin http 跨域 访问 ajax 添加 NET com


在web项目中经常用到在ajax中进行跨域访问,比如在a域中访问b域中的服务,却实现不了。原因是:浏览器为了保证服务器数据的安全,对于这种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器明确地告知它允许跨域调用。所以问题的解决需要在服务器端完成。

解决的方法为采用jsonp的形式,而很多时候,服务器端并没有按jsonp的信息进行编写。所以需要在服务器但处理代码允许跨域访问。

PHP中需要在Server.php中添加如下代码:

指定某域名(http://client.a.com)跨域访问,则只需在http://server.a.com/server.php文件头部添加如下代码:

header('Access-Control-Allow-Origin:http://client.a.com');


如果指定多个域名,需要在服务器端server.php的头部添加如下代码:

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  

$allow_origin = array(
'http://client1.runoob.com',
'http://client2.runoob.com'
);

if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin:'.$origin);
}


在asp.net中,

针对ASP.NET MVC和ASP.NET Web API两种项目类型,我做了一些研究,确定下面的方案是可行的。

针对ASP.NET MVC,只需要在web.config中添加如下的内容即可

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>

针对ASP.NET Web API,除了上面这样的设置,还需要添加一个特殊的设计,就是为每个APIController添加一个OPTIONS的方法,但无需返回任何东西。

public string Options()
{
return null; // HTTP 200 response with empty body
}


标签:origin,http,跨域,访问,ajax,添加,NET,com
From: https://blog.51cto.com/u_14365218/6023275

相关文章

  • Day - 03 JQuery及AJAX
    1.jquery介绍jQuery的定义jQuery是对JavaScript的封装,它是免费、开源的JavaScript函数库,jQuery极大地简化了JavaScript编程。jQuery的作用jQuery和JavaScript......
  • 解决Win7 无法访问Windows Installer服务。Windows Installer没有正确安装时可能发生
    注:我使用的系统为Win7旗舰版今天在安装一个软件时,发生错误,提示信息如下:无法访问WindowsInstaller服务。WindowsInstaller没有正确安装时可能发生这种情况...截图如下:在......
  • 解释 AJAX 中请求的不同就绪状态
    AJAX代表异步JavaScript和XML。它是一组用于创建交互式Web应用程序的Web开发技术。AJAX允许网页与服务器通信,而无需重新加载页面。就绪状态是处理AJAX请求的重要......
  • Vue3 proxy 解决跨域
    1.首先我们先了解一下什么是跨域主要是出于浏览器的同源策略限制,它是浏览器最核心也最基本的安全功能。当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不......
  • ASP.NET2.0运行时提示:以一种访问权限不允许的方式做了一个访问套接字的尝试
    在调试ASP.NET的时候常出现如下错误错误消息框:   未能开始侦听端口xxxxx以一种访问权限不允许的方式做了一个访问套接字的尝试解决方法:找到该项目的sln......
  • 磁盘缓存加快了磁盘访问速度
    磁盘缓存(diskcache):磁盘缓存的缓存(cache)是高速缓存、仓库的意思。磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。这样一来,当接下来需要读取同一数据时,......
  • k8s数据访问流
    Kubernetes集群环境下,集群内应用负载间的数据访问流和集群外应用到集群内应用负载的数据访问流。数据流与网络方案密切相关。目前,Kubernetes官网提供的网络解决方案有Cali......
  • Web安全入门与靶场实战(16)- 越权访问漏洞
    我们接着上篇博文来继续研究靶机中的网站。首先网站中有个login登录页面,这里就可能会存在SQL注入漏洞。但是作为一个零基础入门课程,这里不准备展开介绍SQL注入,这个可以放在......
  • nginx 做图像服务器,生成图片的URL,让前端访问
    需求:后端不断产生新的图片数据,发送给前端,前端然后显示。方案:1.后端可以生成一个图片URL地址,然后返回给前端【采用】2.或者返回base64疑问:将图片文件......
  • 【转】传统的SpringMvc项目如何使用ajax发送PUT或DELETE请求?
    原文:https://www.cnblogs.com/lveyHang/p/11790488.html 一、方式一:将POST请求转化为相应的PUT和DELETE 请求1.在Web.xml中添加如下配置:用于将POST请求转......