【问题标题】:Without adding cross origin code on service side how to solve cross origin issue?在服务端不添加跨域代码如何解决跨域问题?
【发布时间】:2019-11-14 23:11:03
【问题描述】:

没有在服务端语言上添加跨源代码。可以解决 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');
    }
}

【问题讨论】:

    标签: java php angular laravel api


    【解决方案1】:

    来自 CORS documentation

    当 Web 应用程序请求的资源与它自己的来源不同(域、协议和端口)时,它会执行跨域 HTTP 请求。

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

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

    【讨论】:

    • 意味着我们需要在同一台服务器上托管两个代码,对吧? @大卫
    • 协议、域、端口必须相同。因此,只要您有合适的基础设施(例如负载均衡器),API 和前端代码就不需要在同一台服务器上。
    猜你喜欢
    • 2019-12-01
    • 2013-08-13
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2010-11-24
    • 2017-05-26
    • 2019-08-05
    • 2011-11-17
    相关资源
    最近更新 更多