有哪些方法可以实现不同语言间的前端跨域请求?

2026-05-17 07:063阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1054个文字,预计阅读时间需要5分钟。

在处理前端跨域请求时,由于浏览器同源策略的限制,若不设置前端代理,则需要在后端设置允许跨域。以下是一些常见设置示例:

1. Node.js 服务器配置 CORS:javascriptapp.use((req, res, next)=> { res.header('Access-Control-Allow-Origin', '*'); // 允许所有来源 res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); next();});

2. Java Spring Boot 配置 CORS:java@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) // 允许所有来源 .allowedMethods(GET, POST, PUT, DELETE); }}

3. Python Flask 配置 CORS:pythonfrom flask import Flask, request, make_responsefrom flask_cors import CORS

app=Flask(__name__)CORS(app)

@app.after_requestdef after_request(response): response.headers.add('Access-Control-Allow-Origin', '*') response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') return response

在遇到前端跨域请求时,由于浏览器受同源策略的限制,如果不方便设置前端代理,那就要后端设置允许跨域,下面以常见语言或服务器环境为例来设置。

跨源资源共享(CORS):developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

php

// 服务器端相应数据类型 header('Content-Type: application/json;charset=utf-8'); // 或 header('Content-Type: text/html;charset=utf-8'); // *代表允许任何网址请求 header('Access-Control-Allow-Origin:*'); // 允许请求的类型 header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 设置是否允许发送 cookies header('Access-Control-Allow-Credentials: true'); // 设置允许自定义请求头的字段 header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with,Origin'); // 还如:header("access-control-allow-headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With"); 说明:

  • 上面每项不是必须的,请根据实际需求来设定。
  • 限定域名使用header("Access-Control-Allow-Origin: www.xxx.xom");
  • 如果设置后,get跨域请求正常,post异常,可能是Access-Control-Allow-Headers项问题,如没有包含Content-Type等。或者POST请求中对Content-Type使用application/json这个标头修改为application/x-www-form-urlencoded试试。
Java
  • 如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全:response.setHeader("Access-Control-Allow-Origin","*");
  • 为保证安全性,可以只添加部分域名允许访问,添加位置可以在下面三处任选一个。可以在过滤器的filterdofilter()方法种设置;可以在servletget或者post方法里面设置;可以放在访问的jsp页面第一行。
  • 在此用第一种方法,注意web.xml配置过滤器(filter)。

public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { // 将ServletResponse转换为HttpServletResponse HttpServletResponse www.baidu.com","127.0.0.1","127.0.0.1:8080"}; Set allowedOrigins= new HashSet(Arrays.asList(allowDomain)); String originHeader=((HttpServletRequest) req).getHeader("Origin"); if (allowedOrigins.contains(originHeader)){ localhost:8080'; // 允许多个跨域 // var allowCors = ['localhost:8080', 'localhost:8081']; // return allowCors.indexOf(ctx.header.origin) > -1 ? ctx.header.origin : ''; }, exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowMethods: ['GET', 'POST', 'DELETE'], allowHeaders: ['Content-Type', 'Authorization', 'Accept'], })); Python Flask

1、使用 flask 内置的 after_request() 方法

app = Flask(__name__) # 跨域支持 def after_request(resp): resp.headers['Access-Control-Allow-Origin'] = '*' return resp app.after_request(after_request)

2、使用 flask_cors 模块

from flask import Flask from flask_cors import CORS app = Flask(__name__) CORS(app) asp.net

设置 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,OPTIONS" /> </customHeaders> </httpProtocol> </system.webServer> asp

这个只有收藏意义了。

Response.AddHeader "Access-Control-Allow-Origin", "*" Response.AddHeader "Access-Control-Allow-Credentials", "true" Response.AddHeader "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE" Response.AddHeader "Access-Control-Allow-Headers", "Content-Type, Authorization, Accept,X-Requested-With"

来源:各种语言允许前端跨域请求的办法 (xushanxiang.com)

标签:办法

本文共计1054个文字,预计阅读时间需要5分钟。

在处理前端跨域请求时,由于浏览器同源策略的限制,若不设置前端代理,则需要在后端设置允许跨域。以下是一些常见设置示例:

1. Node.js 服务器配置 CORS:javascriptapp.use((req, res, next)=> { res.header('Access-Control-Allow-Origin', '*'); // 允许所有来源 res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); next();});

2. Java Spring Boot 配置 CORS:java@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) // 允许所有来源 .allowedMethods(GET, POST, PUT, DELETE); }}

3. Python Flask 配置 CORS:pythonfrom flask import Flask, request, make_responsefrom flask_cors import CORS

app=Flask(__name__)CORS(app)

@app.after_requestdef after_request(response): response.headers.add('Access-Control-Allow-Origin', '*') response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') return response

在遇到前端跨域请求时,由于浏览器受同源策略的限制,如果不方便设置前端代理,那就要后端设置允许跨域,下面以常见语言或服务器环境为例来设置。

跨源资源共享(CORS):developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

php

// 服务器端相应数据类型 header('Content-Type: application/json;charset=utf-8'); // 或 header('Content-Type: text/html;charset=utf-8'); // *代表允许任何网址请求 header('Access-Control-Allow-Origin:*'); // 允许请求的类型 header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 设置是否允许发送 cookies header('Access-Control-Allow-Credentials: true'); // 设置允许自定义请求头的字段 header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with,Origin'); // 还如:header("access-control-allow-headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With"); 说明:

  • 上面每项不是必须的,请根据实际需求来设定。
  • 限定域名使用header("Access-Control-Allow-Origin: www.xxx.xom");
  • 如果设置后,get跨域请求正常,post异常,可能是Access-Control-Allow-Headers项问题,如没有包含Content-Type等。或者POST请求中对Content-Type使用application/json这个标头修改为application/x-www-form-urlencoded试试。
Java
  • 如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全:response.setHeader("Access-Control-Allow-Origin","*");
  • 为保证安全性,可以只添加部分域名允许访问,添加位置可以在下面三处任选一个。可以在过滤器的filterdofilter()方法种设置;可以在servletget或者post方法里面设置;可以放在访问的jsp页面第一行。
  • 在此用第一种方法,注意web.xml配置过滤器(filter)。

public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { // 将ServletResponse转换为HttpServletResponse HttpServletResponse www.baidu.com","127.0.0.1","127.0.0.1:8080"}; Set allowedOrigins= new HashSet(Arrays.asList(allowDomain)); String originHeader=((HttpServletRequest) req).getHeader("Origin"); if (allowedOrigins.contains(originHeader)){ localhost:8080'; // 允许多个跨域 // var allowCors = ['localhost:8080', 'localhost:8081']; // return allowCors.indexOf(ctx.header.origin) > -1 ? ctx.header.origin : ''; }, exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowMethods: ['GET', 'POST', 'DELETE'], allowHeaders: ['Content-Type', 'Authorization', 'Accept'], })); Python Flask

1、使用 flask 内置的 after_request() 方法

app = Flask(__name__) # 跨域支持 def after_request(resp): resp.headers['Access-Control-Allow-Origin'] = '*' return resp app.after_request(after_request)

2、使用 flask_cors 模块

from flask import Flask from flask_cors import CORS app = Flask(__name__) CORS(app) asp.net

设置 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,OPTIONS" /> </customHeaders> </httpProtocol> </system.webServer> asp

这个只有收藏意义了。

Response.AddHeader "Access-Control-Allow-Origin", "*" Response.AddHeader "Access-Control-Allow-Credentials", "true" Response.AddHeader "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE" Response.AddHeader "Access-Control-Allow-Headers", "Content-Type, Authorization, Accept,X-Requested-With"

来源:各种语言允许前端跨域请求的办法 (xushanxiang.com)

标签:办法