java - 在服务端不添加跨源代码如何解决跨源问题?

标签 java php angular laravel api

无需在服务端语言上添加跨源代码。可以解决 Angular 7 与 Java API 或 Laravel (PHP) 的跨源问题。

无需添加以下代码。

对于 Java:

public class CORSFilter extends OncePerRequestFilter {
    private static final Log LOG = LogFactory.getLog(CORSFilter.class);

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        response.addHeader("Access-Control-Allow-Origin", "*");
        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
            LOG.trace("Sending Header....");
            // CORS "pre-flight" request
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            // response.addHeader("Access-Control-Allow-Headers", "Authorization");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type");
            response.addHeader("Access-Control-Max-Age", "1");
        }
        filterChain.doFilter(request, response);
    }

}

对于 Laravel:

namespace App\Http\Middleware;

use Closure;
class Cors
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE');
    }
}

最佳答案

来自 CORS documentation

A web application executes a cross-origin HTTP request when it requests a resource that has a different origin (domain, protocol, and port) than its own origin.

因此,如果您确实不想在 API 服务器上设置 CORS header ,则需要确保 API 服务器与您的 Angular 网站具有相同的协议(protocol)、主机和域。

否则,如果只是出于开发/测试目的,您可以尝试使用 Angular 的 proxy server

关于java - 在服务端不添加跨源代码如何解决跨源问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56884050/

相关文章:

php - 在 where 子句中找不到列

php - 尝试在 Ubuntu 上安装 OAuth 但出现错误

php - 数据库中的IP地址比较

angular - 使用 REST API 和浏览器的下载管理器下载大文件

javascript - 如何在 Owl Carousel 中只显示单个项目?

java - Gradle 4.0 不在命令行中显示已执行的任务

java - 如何播放Environment.DIRECTORY_DOWNLOADS中的mp3文件

java - 我发送到队列的 SOAP 请求在 IBM MQ 上格式不正确

javascript - RXJS - 如果可观察值中的值满足特定条件,则执行函数

Javascript客户端无法连接到java服务器